ti-enxame.com

Não há mais de um módulo em posição

Eu estava pensando se havia algum PHP que eu poderia adicionar ao meu modelo index.php que garantiria que apenas um módulo fosse carregado em uma posição específica).

Eu sei que existem outras opções disponíveis, como o Advanced Module Manager, mas para este site em particular, seria ótimo se eu pudesse adicionar algum php diretamente à página. Basicamente, se houver 2 módulos sendo carregados em uma posição, eu só quero que o primeiro módulo seja carregado.

Obrigado.

2
DesignSubway

Eu tenho que concordar com o comentário de Lodder ... Isso não está fazendo um sentido real e provavelmente criará confusão.

Mas, para responder a sua pergunta e ajudá-lo a encontrar uma maneira de conseguir algo assim, tente a abordagem abaixo:

<?php
  jimport( 'joomla.application.module.helper' );
  $modules = JModuleHelper::getModules( 'yourposition' );
  $attribs = array('style' => 'xhtml');    
  echo JModuleHelper::renderModule($modules[0], $attribs);
?>

A função getModules($position) carregará uma matriz com todos os módulos em sua posição, ordenados pelo ID do módulo.

Em seguida, com a função renderModule($module,$attributes), você gera o módulo. Mas como você tem uma matriz, é necessário dizer qual módulo você renderizará, especificando o índice do elemento da matriz.

Mas como ainda haverá uma maneira dinâmica de criar/editar/alterar as configurações dos módulos, não tenho certeza de como garantir que módulo será renderizado no final, no caso de outros usuários gerenciarem o site.

Portanto, se você explicasse um pouco mais o que está tentando alcançar e por quê, poderíamos propor a solução certa.

2
FFrewin

A maioria dos modelos processa módulos como este

<?php if ($this['modules']->count('search')) : ?>
<div id="search"><?php echo $this['modules']->render('search'); ?></div>
<?php endif; ?>

$ this ['modules'] -> count ('search') é basicamente o número de módulos; portanto, se você tivesse dois módulos na posição de pesquisa sendo renderizados em uma página específica, o valor seria 2

Você pode criar de forma simples se $ this ['modules'] -> render ('search'); > 1 ecoa o código do tipo 'Oly um módulo permitido nesta posição' em seu arquivo de índice para o modelo, mas isso não é realmente padrão e não é assim que o Joomla foi projetado para funcionar, e, se for seu próprio site, faça certifique-se de definir apenas um módulo.

Como modelo de varejo, eu posso ver essa função específica causando problemas e talvez você devesse considerar a codificação dessa posição específica do módulo como uma apresentação de slides para que ela possa renderizar vários módulos, mas apenas os deslize no mesmo espaço em vez de renderizá-los todos de uma vez só.

Espero que isto ajude

1
MOLEDesign