Modulo di visualizzazione in più posizioni


8

È possibile visualizzare un modulo in più posizioni, preferibilmente in modo nativo o tramite un'estensione di terze parti?

So che ci sono soluzioni alternative ...

  • clonare il modulo e cambiare la posizione, tuttavia questo è noioso se il modulo contiene, diciamo, HTML personalizzato e questo probabilmente cambierà spesso.
  • usa la loadsintassi per rilasciare il modulo dove vuoi, ma risulta comunque che i moduli vengano creati semplicemente per contenere altri moduli

ma entrambi creano lavori di manutenzione extra che preferirei rinunciare.

Risposte:


1

È possibile utilizzare moduli nonumbers ovunque.

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

A differenza della versione di loadposition presente nel core, può essere utilizzata anche in un modulo e non solo in un articolo. Quindi potresti creare un secondo modulo html personalizzato e quindi chiamare la prima posizione. Questo in sostanza ti darebbe una copia della posizione, ma qualsiasi impostazione modificata nel primo modulo verrà applicata anche nel secondo "clone".


Saluti per dare un'occhiata a @Jordan, ma puoi farlo senza Moduli Ovunque - vedi docs.joomla.org/How_do_you_put_a_module_inside_an_article%3F (il modulo HTML personalizzato accetta la loadsintassi se imposti Prepara contenuto su "Sì"), rientrando quindi nella mia 2 soluzione alternativa.
codinghands,

hmm, buona nota, la mia esperienza è stata che non ha funzionato, potrebbe essere stato un bug nella versione specifica in cui l'ho provato. Da allora non ci ho più provato.
Jordan Ramstad,

Il problema con i moduli ovunque è che non esegue alcuna memorizzazione nella cache (vedere la nostra esperienza qui: itoctopus.com/… ). Ciò significa che per i moduli pesanti verranno sempre ricreati di nuovo e non solo catturati dalla cache (anche se esiste un file cache per quel file).
itoctopus,

1

Suggerisco di creare un semplice plugin e di usare qualcosa del genere per pubblicare il modulo in più posizioni (usando un loop):

$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

(Non testato)

Vedrò se riesco a mettere insieme qualcosa di più completo più tardi oggi.


1

A un livello semplice puoi provare questo:

Se si tratterà di un singolo modulo e hai già definito dove vuoi visualizzarlo, puoi creare una posizione del modulo speciale nel tuo modello ed effettuare 2 o tutte le chiamate necessarie, nelle posizioni che desideri nel modello. Caricherà i moduli di quella posizione ovunque tu lo chiami.

Se ci sono più moduli e per più posizioni vuoi applicarlo, l'approccio sopra può ancora andare bene, a meno che se non hai bisogno di un maggiore controllo o di aspetti complessi dei moduli, qualcosa che potrebbe richiedere una creazione "più intelligente" delle posizioni dei moduli e richiede i moduli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.