Module d'affichage dans plusieurs positions


8

Est-il possible d'afficher un module dans plusieurs positions, de préférence en mode natif, ou via 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 HTML personnalisé et cela est susceptible de changer souvent.
  • utilisez la loadsyntaxe pour déposer le module où vous le souhaitez, mais les résultats sont toujours créés simplement pour contenir d'autres modules

mais les deux créent des travaux de maintenance supplémentaires auxquels je préfère renoncer.

Réponses:


1

Vous pouvez utiliser des modules nonumbers n'importe où.

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

Contrairement à la version de position de charge qui est dans le noyau, elle peut également être utilisée dans un module et pas seulement dans un article. Vous pouvez donc créer un deuxième module html personnalisé, puis appeler la première position. Cela vous donnerait essentiellement une copie de la position, mais quels que soient les paramètres que vous modifiez dans le premier module s'appliqueront également dans le second "clone".


Merci d'avoir jeté un coup d'œil à @Jordan, mais vous pouvez le faire sans modules n'importe où - voir docs.joomla.org/How_do_you_put_a_module_inside_an_article%3F (le module HTML personnalisé accepte la loadsyntaxe si vous définissez Préparer le contenu sur 'Oui'), tombant ainsi sous mon 2ème solution de contournement.
codinghands

hmm, bonne note, mon expérience a été que cela ne fonctionnait pas, cela pourrait être un bug dans la version spécifique dans laquelle je l'ai essayé. Je n'ai pas vraiment essayé depuis.
Jordan Ramstad

Le problème avec les modules n'importe où est qu'ils ne font pas de mise en cache (voir notre expérience ici: itoctopus.com/… ). Cela signifie que pour les modules lourds, ils seront toujours recréés à nouveau et pas seulement récupérés dans le cache (même s'il existe un fichier de cache pour ce fichier).
itoctopus

1

Je suggère de construire un plugin simple et d'utiliser quelque chose comme ça pour publier le module à 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 préparer quelque chose de plus complet plus tard dans la journée.


1

À un niveau simple, vous pouvez essayer ceci:

S'il s'agit d'un module unique et que vous avez déjà défini où vous souhaitez l'afficher, vous pouvez créer une position de module spéciale dans votre modèle et effectuer 2 ou autant d'appels que nécessaire pour cela, aux emplacements souhaités dans 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 toujours convenir, à moins que si vous avez besoin de plus de contrôle ou d'apparences complexes des modules, quelque chose qui pourrait nécessiter la création "plus intelligente" de positions de module et appelle à les modules.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.