Bileşen alanında modül nasıl görüntülenir


13

Sık sık, başka bir içerik olmadan, bileşen alanında bir modül görüntüleyen bir menü öğesi oluşturmak gerekir.

Bunu çözme şeklim yeni bir makale oluşturmak ve sadece {loadposition mymodule}makale içeriğine eklemek . Sonra makale için bir Tek Makale menü öğesi oluşturuyorum. Bu tek bir modül için iyi, ama bu şekilde görüntülemek istediğim 20 farklı modülüm varsa ne olur? 20 modül, 20 (neredeyse boş) makale ve 20 menü öğesi oluşturmak zorunda kalacaktım.

Bir şablonun bileşen alanında bir modül (ve başka bir şey) göstermenin başka yolları var mı? Hileler? Hileler? Fikirler?


Joomla! 3 sizin için bir modül oluşturan düzenleyici düğmesini kullanmak için. Bu hızlı ve daha az hataya eğilimli olur.
Eoin

Yanıtlar:


10

Bunu, bileşenle aynı konumda bir modül konumu oluşturarak ve bu konumda bir modülün mevcut olup olmadığını kontrol ederek bunu yaptınız, aksi takdirde bileşen için gidin:

Kod örneği:

<main id="content" role="main" class="main">
 <?php 
 if ($this->countModules('myposition')) 
   { ?>
     <jdoc:include type="modules" name="myposition" style="xhtml" />
 <?php } 
  else 
  { ?>
     <jdoc:include type="component" /> 
  <?php } ?>
</main>

Sonra bir sayfada bileşen yerine bir modül görüntülemek istediğimde, modülü o menü öğesine atamak için oluşturdum ve işim bitti.

Küçük bir yan not:

Kolaylık ve daha iyi netlik için, bu modül pozisyonuna "içerik modülü", "ana modül" veya "komomodül" gibi bir ad vermenizi öneririm. Oraya yerleştirilmiş herhangi bir modülün, bileşen çıkışının yerini alacağını hatırlatacak her şey.


1
Bu ideal çözümdür. Birçok ticari şablonun yönetici tarafı yapılandırmalarında bir parametre geçişi vardır, ancak bu ticari şablonlardan birini kullanmıyorsanız ... bu en verimli ve zarif yanıttır.
Toni Marie

1
Bu fikri seviyorum, basit ve etkili ve mevcut şablonlarda uygulanması kolay. Mükemmel.
johanpw

9

Burada verilen cevapları geliştirmek için:

Bileşen görünümünüze bir modül konumu eklemek ve oraya modüller yüklemek için,

echo JHtml::_('content.prepare', '{loadposition yourmodulposition}');

görünüm dosyasına.

Yükleme konumu kısa etiketine sahip ikinci dize, gerekirse daha fazla html içeren bir değişkenle değiştirilebilir. Her yeni modül konumu için bu satırı yazmak zorunda değilsiniz:

$outputModules = '<strong>Some Html</strong>'
                 .'{loadposition yourmodulposition1}'
                 .'{loadposition yourmodulposition2}';


echo JHtml::_('content.prepare', $outputModules);

(Bunun yazarların sorusuna doğrudan bir cevap olmadığını biliyorum.)


2

İşte basit ve çalışan bir çözüm. Jdoc ile denedim: dahil ama işe yaramadı.

    $ document = JFactory :: getDocument ();
    $ renderer = $ document-> loadRenderer ('modüller');
    $ position = 'saklama adı';
    $ options = dizi ('stil' => 'ham');
    echo $ renderer-> render ($ position, $ options, null); 

Lütfen yukarıdaki kodun, soruda açıklandığı gibi istenen sonucu elde etmek için nasıl kullanılabileceğini açıklayınız.
FFrewin

Arka kısımda yeni bir modül oluşturun ve konumunu ayarlayın (saklama adı deyin) ve yayınlayın. Ön uçta, yukarıdaki kodu ekleyin ve herhangi bir sorun olmadan çalışır.
akfaisel

0

Sitemde uzantı demoları ve indirme düğmeleri için de aynısını yapmak zorunda kaldım, ancak tüm dürüstlükten ötürü, işleri ayrı tutmak, yönetmenin daha kolay olduğu için bazı yönlerden daha iyi olduğunu düşünüyorum. Sadece gerçek CMS ile aradığınızı elde etmenin bir yolu olmadığından emin değilim, sadece sabit kod (daha fazla değil).


0

Öncelikle, sorunuza göre zaten 20 modül ve 20 menü öğesi oluşturuyorsunuz, bu yüzden yapmanız gereken tek şey, her modül için tek satırlık bir içerik öğesi oluşturmaktır. Bu gerçekten çok zahmetliyse, @ FFrewin fikrine devam edin. Biraz kurnaz, ama işe yarayacak.

Şahsen, içerik öğeleri ile giderdim. Aslında ben js etkin olmadan da çalışmak istedim açılan iletişim kutuları ile bir sistem inşa ederken yaptım. Diyalog içeriğini bir custom_html modülüne koydum, bir link tıklandığında açığa çıkarılacak ve konumlandırılacak modülü değiştirdim. Ve sonra bağlantıyı, tarif ettiğiniz gibi modül de dahil olmak üzere bir içerik öğesine yönlendirdim. Js etkinleştirilmişse, bağlantı izlenmedi ve iletişim kutusu açıldı. Js devre dışı bırakıldıysa, bağlantı izlendi ve iletişim kutusunun içeriği içerik olarak görüntülendi. Ve içerik tek bir yerdeydi, bu yüzden içeriğin iki ayrı kopyasını saklamıyordum.




0

Boş makale oluşturun.

Oluşturduğunuz makaleyi seçerek menü öğesi oluşturun.

Modülü kullanılmayan konumda oluşturun, menü atamasını yalnızca seçilen sayfalarda ayarlayın, yalnızca yukarıdan menü öğesini seçin.

Bu en iyi düşündüğüm için cevabımı vereceğim, yaptığım da bu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.