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.

codinghands
la source

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".

Jordan Ramstad
la source
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.

johanpw
la source
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.

FFrewin
la source