Kategori Menüsü — categorymenu.tpl

categorymenu.tpl, sitenin kategori menüsünü üretir. Bu şablon diğerlerinden farklıdır: bir PHP modülü tarafından değil, şablon motorunun kendisi tarafından işlenir.

KonuAyrıntı
İşleyen koddle_template::build_cat_menu() (engine/classes/templates.class.php)
TetikleyiciŞablondaki {catmenu} etiketi
Varsayılan şablon adıcategorymenu — başka ad vermezseniz bu dosya yüklenir

Çağırma biçimi

{catmenu template="categorymenu" cache="yes" subcat="yes" id="1,2,3" idexclude="9"}
ParametreAnlamı
templateKullanılacak şablon dosyası (varsayılan: categorymenu)
cacheyes / no — çıktı önbelleklensin mi?
subcatyes (alt kategorileri içer), no, only (yalnız alt kategoriler)
idYalnız bu kategori ID'lerini göster (virgüllü)
idexcludeBu ID'leri gösterme
i
Hazır temalar alt şablon kullanır Örneğin varsayılan tema, şablonu şöyle çağırır: {catmenu template="modules/catmenu" cache="no"}. Yani categorymenu.tpl dosyası yedek (fallback) şablondur; temalar genellikle modules/ altındaki kendi sürümünü kullanır. Kendi temanızda hangisinin çağrıldığını main.tpl'e bakarak görün.

Şablonun yapısı

Bu şablon, normal bir şablondan farklı olarak kalıp + öğe döngüsü yapısına sahiptir:

[root]
    <ul class="catmenu">
        {items}
    </ul>
[/root]

[item]
    <li class="cat-item">
        <a href="{url}">{name}</a> {sub-item}
    </li>
[/item]

[sub-prefix]<ul class="submenu">[/sub-prefix]
[sub-suffix]</ul>[/sub-suffix]
BlokNe işe yarar?
[root]…[/root]Her şeyi saran kalıp. {items} tüm kategori öğelerini basar.
[item]…[/item]Tek bir kategorinin kalıbı. Menüdeki her kategori için tekrarlanır.
{sub-item}Alt kategorilerin basılacağı yer (öğe kalıbı içinde).
[sub-prefix] / [sub-suffix]Alt kategori listesini saran ön/son ek (örn. açılış/kapanış etiketi).

Öğe içinde kullanılabilen etiketler

Bu etiketler yalnız [item]…[/item] kalıbının içinde doludur:

Etiketİçeriği
{id}Kategori ID
{name}Kategori adı
{description}Kategori açıklaması
{url}Kategorinin adresi (SEF uyumlu)
{icon}Kategori ikonu (yoksa varsayılan ikon)
{news-count}Kategorideki haber sayısı
{sub-item}Alt kategori listesi

Öğe içindeki koşullar

BlokNe zaman?
[description] / [not-description]Açıklama var / yok
[cat-icon] / [not-cat-icon]Özel ikon tanımlı / değil
[active] / [not-active]Kullanıcı bu kategoride mi?
[isparent] / [not-parent]Bu bir üst kategori mi?
[is-children] / [not-children]Bu bir alt kategori mi?
!
Önbellek açıkken [active] çalışmaz Menü önbelleğe alındığında "şu an bu kategoridesiniz" bilgisi her ziyaretçi için farklı olacağından DLE bu bloğu kaldırır. Aktif kategori vurgusu istiyorsanız ya cache="no" kullanın ya da vurgulamayı CSS/JS ile yapın.

Tam örnek

[root]
<nav class="catmenu">
    <ul>
        {items}
    </ul>
</nav>
[/root]

[item]
<li class="cat-item[active] is-active[/active]">
    <a href="{url}">
        [cat-icon]<img src="{icon}" alt="">[/cat-icon]
        <span>{name}</span>
        <em>{news-count}</em>
    </a>
    [description]
        <p class="cat-desc">{description}</p>
    [/description]
    {sub-item}
</li>
[/item]

[sub-prefix]<ul class="submenu">[/sub-prefix]
[sub-suffix]</ul>[/sub-suffix]

Haber sayısı neden 0 geliyor?

{news-count} yalnızca kategori haber sayacı ayarı açıkken dolar; kapalıysa her kategoride 0 görünür. Bu bir hata değildir.

★
Sayaç performansı etkiler Haber sayacı, her menü üretiminde kategoriler için ek sorgu gerektirir. Çok kategorili sitelerde bunu kapalı tutup menüyü önbelleklemek daha hızlıdır.

Tuzaklar

HataSonuç
{items} etiketini silmekMenüde hiç kategori görünmez
[item] bloğunu silmekÖğe kalıbı olmadığı için çıktı boş kalır
Öğe etiketlerini [item] dışında kullanmakBoş kalır
cache="yes" ile [active] beklemekAktif kategori vurgusu çalışmaz
Menüyü main.tpl yerine kenar çubuğu alt şablonuna koymayı unutmakMenü hiç görünmez

Kontrol listesi

  • {catmenu} çağrısı main.tpl veya kenar çubuğu şablonunda var.
  • {items} etiketi [root] içinde duruyor.
  • [item] kalıbında {url} ve {name} kullanıldı.
  • Alt kategori görünümü istiyorsam {sub-item} ekledim.
  • Aktif kategori vurgusu için cache="no" kullandım.
  • Haber sayacını kullanıyorsam ilgili ayar açık.