web-dev-qa-db-fra.com

Module d'affichage à plusieurs positions

Est-il possible d'afficher un module dans plusieurs positions, de préférence en mode natif, ou par le biais d'une extension tierce?

Je sais qu'il existe des solutions de contournement ...

  • cloner le module et changer la position, mais cela est fastidieux si le module contient, par exemple, du code HTML personnalisé, ce qui est susceptible de changer souvent.
  • utilisez la syntaxe load pour déposer le module où vous voulez, mais il en résulte que des modules sont créés simplement pour contenir d'autres modules

mais les deux créent des travaux de maintenance supplémentaires que je préférerais renoncer.

8
codinghands

Vous pouvez utiliser des modules non numérotés n'importe où.

http://www.nonumber.nl/extensions/modulesanywhere/userguide

Contrairement à la version de loadpos qui est dans le noyau, il peut également être utilisé dans un module et pas simplement dans un article. Vous pouvez donc créer un deuxième module HTML personnalisé, puis appeler le premier poste. Cela vous donnerait une copie de la position, mais quels que soient les paramètres que vous modifiez dans le premier module, ils seront également appliqués dans le deuxième "clone".

1
Jordan Ramstad

Je suggère de construire un plugin simple, et d’utiliser quelque chose comme ceci pour publier le module sur plusieurs positions (en utilisant une boucle):

$document   = &JFactory::getDocument();
$renderer   = $document->loadRenderer('modules');
$options    = array('style' => 'xhtml');
for ($x=0; $x<=5; $x++) {
     $position   = 'myPosition' . $x;
     echo $renderer->render($position, $options, null);
}
// Repeat for each module position, changing only $position

(Pas testé)

Je verrai si je peux élaborer quelque chose de plus complet plus tard aujourd'hui.

1
johanpw

À un niveau simple, vous pouvez essayer ceci:

S'il s'agit d'un seul module et que vous avez déjà défini l'emplacement où vous souhaitez l'afficher, vous pouvez créer une position de module spéciale dans votre modèle et en effectuer 2 ou autant d'appels que nécessaire, aux emplacements de votre choix dans le modèle. modèle. Il chargera les modules de cette position où que vous l'appeliez.

S'il y a plus de modules et pour plus de postes que vous souhaitez appliquer, l'approche ci-dessus peut encore fonctionner, à moins que si vous avez besoin de plus de contrôle ou d'apparences complexes des modules, cela pourrait nécessiter une création "plus intelligente" de postes de module et d'appels à les modules.

1
FFrewin