- Katılım
- 8 Ocak 2026
- Mesajlar
- 306
- Çözümler
- 2
- Reaksiyon puanı
- 413
- Puanları
- 63
XenForo Template Syntax Rehberi
xf:if, xf:foreach, xf:set, xf:include ve temel şablon mantığı
xf:if, xf:foreach, xf:set, xf:include ve temel şablon mantığı
Bu rehber XenForo 2.3.10 sürümüne göre hazırlanmıştır. XenForo şablonları düz PHP dosyaları değildir; kendine ait güvenli bir template syntax yapısı kullanır.
Bu syntax sayesinde koşul yazabilir, döngü kurabilir, değişken tanımlayabilir, başka şablonları dahil edebilir ve phrase sisteminden metin çekebilirsiniz.
1. Temel Mantık
XenForo şablonlarında genellikle üç yapı karşınıza çıkar:
- Etiketler:
<xf:if>,<xf:foreach>,<xf:include>gibi yapılar. - Değişkenler:
{$thread.title},{$user.username}gibi değerler. - İfadeler:
{{ phrase('save') }}veya{{ $xf.visitor.user_id ? 'yes' : 'no' }}gibi çıktılar.
Dikkat: Şablonlara doğrudan PHP kodu yazılmaz. Karmaşık iş mantığı gerekiyorsa PHP tarafında controller, repository veya service içinde çözülmelidir.
2. xf:if Kullanımı
Koşullu içerik göstermek için kullanılır.
Kod:
<xf:if is="$xf.visitor.user_id">
Hoş geldin, {$xf.visitor.username}
<xf:else />
Lütfen giriş yapın.
</xf:if>
Bu örnekte ziyaretçi giriş yapmışsa kullanıcı adı gösterilir; giriş yapmamışsa alternatif metin gösterilir.
3. xf:foreach Kullanımı
Liste veya koleksiyon döndürmek için kullanılır.
Kod:
<xf:foreach loop="$threads" value="$thread">
<div>{$thread.title}</div>
</xf:foreach>
loop döngüye girilecek veri setini, value ise her satırda kullanılacak geçici değişkeni belirtir.4. xf:set Kullanımı
Şablon içinde geçici değişken tanımlamak için kullanılır.
Kod:
<xf:set var="$buttonText" value="{{ phrase('save') }}" />
Daha uzun içerikler için açılış/kapanış şeklinde de kullanılabilir.
Kod:
<xf:set var="$noticeHtml">
<div class="blockMessage">Bakım modu aktif.</div>
</xf:set>
5. xf:include Kullanımı
Başka bir şablonu mevcut şablon içine dahil etmek için kullanılır.
Kod:
<xf:include template="my_custom_template" />
Parametre göndermek isterseniz
<xf:set> ile birlikte kullanabilirsiniz.
Kod:
<xf:include template="my_custom_template">
<xf:set var="$context" value="{{ 'message' }}" />
</xf:include>
6. xf:macro Kullanımı
Tekrar kullanılabilir şablon parçaları oluşturmak için kullanılır. XenForo’nun birçok temel şablonu macro yapısına dayanır.
Kod:
<xf:macro id="user_link" arg-user="!">
<a href="{{ link('members', $user) }}">{$user.username}</a>
</xf:macro>
Bir macro başka bir yerden çağrılabilir:
Kod:
<xf:macro template="my_macros" name="user_link" arg-user="{$user}" />
7. Phrase Kullanımı
Sabit metinleri doğrudan şablona yazmak yerine phrase kullanmak daha doğru yaklaşımdır.
Kod:
{{ phrase('save') }}
Eklenti geliştiriyorsanız kendi phrase anahtarlarınızı anlamlı şekilde isimlendirin.
Kod:
{{ phrase('myaddon_custom_button') }}
8. CSS ve JS Dahil Etme
Bir şablon içinde özel LESS dosyası dahil etmek için:
Kod:
<xf:css src="my_custom.less" />
JavaScript dosyası dahil etmek için:
Kod:
<xf:js src="vendor/addon/script.js" />
9. Sık Yapılan Hatalar
- PHP yazmaya çalışmak: XenForo template syntax PHP değildir.
- Değişkenin varlığını kontrol etmemek: Her sayfada her değişken bulunmayabilir.
- Çok fazla iş mantığını şablona taşımak: Şablonlar görünüm katmanıdır.
- Phrase kullanmamak: Çok dilli yapı ve bakım açısından sorun çıkarır.
- Kapanış etiketlerini unutmak:
</xf:if>veya</xf:foreach>eksikliği sayfa hatalarına yol açabilir.
Özet: XenForo template syntax, güçlü ama kontrollü bir yapıdır. Görünüm tarafını temiz tutar; karmaşık iş mantığını PHP katmanına bırakır.