Tampilkan modul dalam berbagai posisi

8

Apakah mungkin untuk menampilkan modul dalam berbagai posisi, lebih disukai secara alami, atau melalui ekstensi pihak ketiga?

Saya tahu ada solusi ...

  • mengkloning modul dan mengubah posisi, namun ini melelahkan jika modul berisi, katakanlah, HTML kustom dan ini cenderung sering berubah.
  • gunakan loadsintaks untuk menjatuhkan modul di mana pun Anda inginkan, tetapi masih menghasilkan modul yang dibuat hanya untuk menampung modul lain

tetapi keduanya membuat pekerjaan pemeliharaan ekstra yang saya lebih suka tinggalkan.

tangan coding
sumber

Jawaban:

1

Anda dapat menggunakan modul non-anyaman di mana saja.

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

Berbeda dengan versi loadposition yang ada di inti, itu dapat digunakan dalam modul juga dan bukan hanya artikel. Jadi Anda bisa membuat modul html kustom kedua, dan kemudian memanggil posisi pertama. Ini pada dasarnya akan memberi Anda salinan posisi, tetapi pengaturan apa pun yang Anda ubah pada modul pertama juga akan berlaku di "klon" kedua.

Jordan Ramstad
sumber
Tepuk tangan untuk melihat @Jordan, tetapi Anda dapat melakukan ini tanpa Modul Di Mana Pun - lihat docs.joomla.org/How_do_you_put_a_module_inside_an_article%3F (modul HTML khusus menerima loadsintaks jika Anda mengatur Siapkan Konten menjadi 'Ya'), jadi termasuk di bawah saya Solusi 2.
coding tangan
hmm, catatan yang baik, pengalaman saya adalah bahwa itu tidak berhasil, bisa jadi bug dalam versi tertentu saya mencobanya. Belum benar-benar mencoba sejak itu.
Jordan Ramstad
Masalah dengan modul di mana saja adalah ia tidak melakukan caching (lihat pengalaman kami di sini: itoctopus.com/… ). Ini berarti bahwa untuk modul yang berat akan selalu dibuat kembali dan tidak hanya diambil dari cache (bahkan jika file cache untuk file itu ada).
itoctopus
1

Saya sarankan untuk membangun plugin sederhana, dan gunakan sesuatu seperti ini untuk menerbitkan modul ke beberapa posisi (menggunakan 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

(Tidak diuji)

Saya akan melihat apakah saya bisa mengumpulkan sesuatu yang lebih lengkap hari ini.

johanpw
sumber
1

Pada level sederhana Anda dapat mencoba ini:

Jika ini akan menjadi modul tunggal dan Anda telah menentukan di mana Anda ingin menampilkannya, Anda dapat membuat posisi modul khusus dalam template Anda dan membuat 2 atau sebanyak panggilan yang diperlukan untuk itu, di lokasi yang Anda inginkan di templat. Ini akan memuat modul dari posisi itu di mana pun Anda menyebutnya.

Jika ada lebih banyak modul dan untuk posisi yang lebih banyak Anda ingin menerapkan ini, pendekatan di atas mungkin masih baik-baik saja, kecuali jika Anda memerlukan lebih banyak kontrol atau penampilan rumit dari modul, sesuatu yang mungkin memerlukan penciptaan posisi modul yang lebih "pintar" dan panggilan untuk modul.

FFrewin
sumber