web-dev-qa-db-fra.com

Pas plus d'un module en position

Je me demandais simplement s'il y avait des PHP) que je pourrais ajouter à mon modèle index.php afin de garantir qu'un seul module est chargé dans une position particulière.

Je sais qu'il existe d'autres options disponibles telles que Advanced Module Manager, mais pour ce site particulier, ce serait formidable si je pouvais ajouter du php directement à la page. Fondamentalement, si 2 modules sont chargés dans une position, je souhaite simplement que le premier module soit chargé.

Merci.

2
DesignSubway

Je suis d'accord avec le commentaire de Lodder ... Cela n'a pas vraiment de sens et cela va probablement créer de la confusion.

Mais pour répondre à votre question et vous aider à trouver un moyen de réaliser quelque chose comme cela, vous pouvez essayer la méthode ci-dessous:

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

La fonction getModules($position) charge un tableau contenant tous les modules de votre position, classés par ID de module.

Ensuite, avec la fonction renderModule($module,$attributes), vous exportez le module. Mais puisque vous avez un tableau, vous devez indiquer le module à rendre en spécifiant l'index de l'élément du tableau.

Mais comme il y aura toujours un moyen dynamique de créer/éditer/changer les paramètres des modules, je ne suis pas sûr de savoir comment vous pouvez vous assurer que le module sera rendu à la fin, dans le cas où d'autres utilisateurs géreraient le site Web.

Donc, si vous vouliez expliquer un peu plus ce que vous essayez d’atteindre et pourquoi, nous pourrions vous proposer la bonne solution.

2
FFrewin

La plupart des templates rendent les modules ainsi

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

$ this ['modules']] -> count ('search') est en gros le nombre de modules, donc si vous aviez deux modules en position de recherche rendus sur une page particulière, la valeur serait de 2

Vous pouvez construire un simple if $ this ['modules'] -> render ('search'); > 1 puis echo "code Oly un module autorisé dans cette position" dans votre fichier d'index pour le modèle, mais ce n'est pas vraiment standard et ce n'est pas vraiment comment Joomla est conçu pour fonctionner, et si c'est votre propre site web, faites juste Assurez-vous de ne définir qu'un seul module.

En tant que modèle de vente au détail, je peux voir que cette fonction pose des problèmes et peut-être devriez-vous envisager de coder la position de ce module en tant que diaporama afin de pouvoir afficher plusieurs modules, mais simplement de les faire glisser dans le même espace au lieu de les afficher tous immediatement.

J'espère que cela t'aides

1
MOLEDesign