Anzeigemodul in mehreren Positionen

8

Ist es möglich, ein Modul an mehreren Positionen anzuzeigen, vorzugsweise nativ oder über eine Erweiterung eines Drittanbieters?

Ich weiß, dass es Problemumgehungen gibt ...

  • Klonen Sie das Modul und ändern Sie die Position. Dies ist jedoch mühsam, wenn das Modul beispielsweise benutzerdefiniertes HTML enthält und sich dies häufig ändert.
  • Verwenden Sie die loadSyntax, um Module zu löschen, wo immer Sie möchten. Dies führt jedoch dazu, dass Module einfach für andere Module erstellt werden

aber beide verursachen zusätzliche Wartungsarbeiten, auf die ich lieber verzichten möchte.

Codierungshände
quelle

Antworten:

1

Sie können Module verwenden, die keine Nummern sind.

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

Im Gegensatz zur Loadposition-Version im Kern kann sie auch in einem Modul und nicht nur in einem Artikel verwendet werden. Sie können also ein zweites benutzerdefiniertes HTML-Modul erstellen und dann die erste Position aufrufen. Dies würde Ihnen im Grunde eine Kopie der Position geben, aber alle Einstellungen, die Sie im ersten Modul ändern, gelten auch für den zweiten "Klon".

Jordan Ramstad
quelle
Ein Hoch auf @Jordan, aber Sie können dies überall ohne Module tun - siehe docs.joomla.org/How_do_you_put_a_module_inside_an_article%3F (das benutzerdefinierte HTML-Modul akzeptiert die loadSyntax, wenn Sie "Inhalt vorbereiten" auf "Ja" setzen) und fällt daher unter "Meine" 2. Problemumgehung.
Codinghands
hmm, guter Hinweis, meine Erfahrung war, dass das nicht funktioniert hat, ein Fehler in der spezifischen Version sein könnte, in der ich es ausprobiert habe. Habe es seitdem nicht wirklich versucht.
Jordan Ramstad
Das Problem mit Modulen ist, dass sie kein Caching durchführen (siehe unsere Erfahrungen hier: itoctopus.com/… ). Dies bedeutet, dass für schwere Module immer wieder neu erstellt und nicht nur aus dem Cache abgerufen wird (auch wenn eine Cache-Datei für diese Datei vorhanden ist).
Itoctopus
1

Ich schlage vor, ein einfaches Plugin zu erstellen und so etwas zu verwenden, um das Modul an mehreren Positionen zu veröffentlichen (mithilfe einer Schleife):

$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

(Nicht getestet)

Ich werde sehen, ob ich später heute etwas vollständigeres zusammenstellen kann.

johanpw
quelle
1

Auf einer einfachen Ebene können Sie dies versuchen:

Wenn dies ein einzelnes Modul sein soll und Sie bereits definiert haben, wo Sie es anzeigen möchten, können Sie eine spezielle Modulposition in Ihrer Vorlage erstellen und 2 oder so viele Aufrufe wie erforderlich an den gewünschten Stellen in der Vorlage tätigen Vorlage. Es lädt die Module dieser Position, wo immer Sie es nennen.

Wenn es mehr Module gibt und Sie für mehr Positionen dies anwenden möchten, ist der obige Ansatz möglicherweise immer noch in Ordnung, es sei denn, Sie benötigen mehr Kontrolle oder ein komplexes Erscheinungsbild der Module, was möglicherweise eine "intelligentere" Erstellung von Modulpositionen und -anforderungen erfordert die Module.

FFrewin
quelle