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.
| Konu | Ayrıntı |
|---|---|
| İşleyen kod | dle_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"}
| Parametre | Anlamı |
|---|---|
template | Kullanılacak şablon dosyası (varsayılan: categorymenu) |
cache | yes / no — çıktı önbelleklensin mi? |
subcat | yes (alt kategorileri içer), no, only (yalnız alt kategoriler) |
id | Yalnız bu kategori ID'lerini göster (virgüllü) |
idexclude | Bu 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]
| Blok | Ne 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
| Blok | Ne 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
| Hata | Sonuç |
|---|---|
{items} etiketini silmek | Menü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 kullanmak | Boş kalır |
cache="yes" ile [active] beklemek | Aktif kategori vurgusu çalışmaz |
Menüyü main.tpl yerine kenar çubuğu alt şablonuna koymayı unutmak | Menü hiç görünmez |
Kontrol listesi
{catmenu}çağrısımain.tplveya 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.