it-swarm-es.tech

No más de un módulo en posición

Me preguntaba si había algunos PHP que podría agregar a mi plantilla index.php que aseguraría que solo se cargue un módulo en una posición particular.

Sé que hay otras opciones disponibles, como Advanced Module Manager, pero para este sitio en particular sería genial si pudiera agregar algo de php directamente a la página. Básicamente, si hay 2 módulos cargados en una posición, solo quiero que se cargue el primer módulo.

Gracias.

2
DesignSubway

Tengo que estar de acuerdo con el comentario de Lodder ... Esto no tiene sentido y probablemente creará confusión.

Pero en aras de responder a su pregunta y ayudarlo a encontrar una manera de lograr algo como esto, puede probar el siguiente enfoque:

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

La función getModules($position) cargará una matriz con todos los módulos en su posición, ordenados por ID de módulo.

Luego, con la función renderModule($module,$attributes), usted saca el módulo. Pero como tiene una matriz, debe indicar qué módulo representará, especificando el índice del elemento de la matriz.

Pero debido a que todavía habrá una forma dinámica de crear/editar/cambiar la configuración de los módulos, no estoy seguro de cómo podría asegurarse de qué módulo se representará al final, en el caso de que otros usuarios administren el sitio web.

Entonces, si explica un poco más qué está tratando de lograr y por qué, podríamos proponerle la solución correcta.

2
FFrewin

La mayoría de las plantillas representan 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') es básicamente el número de módulos, por lo que si tuviera dos módulos en la posición de búsqueda representados en una página en particular, el valor sería 2

Podría construir de manera simple si $ this ['modules'] -> render ('search'); > 1 luego repite el código de tipo 'Oly un módulo permitido en esta posición' en su archivo de índice para la plantilla, pero esto no es realmente estándar y no es así como Joomla está diseñado para funcionar, y si es su propio sitio web, simplemente haga Seguro que solo configura un módulo.

Como plantilla comercial, puedo ver que esa función en particular causa problemas y tal vez debería considerar codificar esa posición particular del módulo como una presentación de diapositivas para que pueda renderizar múltiples módulos, pero simplemente se deslice a través de ellos en el mismo espacio en lugar de representarlos a todos En seguida.

Espero que esto ayude

1
MOLEDesign