ModüllerEklentiler TemalarWidgets Xcreate
Giriş Yap Yayınla

ModHub — Tema Paketi

XOOPS & DataLife Engine için CMS modül yayın sistemi
Ortak CSS + 2 sayfa + 10 widget

📋 Modül Listesi 🔧 Detay Sayfası 🧩 Xcreate Widgets
1
Ortak CSS
3
Ana Sayfa
20
Widget
100%
Mobil Uyumlu
Son Sürüm v2.7.0-RC5
Yayın Tarihi 25 Nisan 2026
Boyut ~43 MB
Lisans GPL v2
Ana Sayfa » Xoops Tips Xoops Smart Code
🧩

Xoops Smart Code

Smart
📁 Category: Xoops Tips

Xoops tema mantığı ne yazıkki .tpl mantığı gibi çalışmamaktadır.Bu yüzden temalar standart kalıplar şeklinde sisteme giydirilir,kısaca temanızın yapısı her modül için aynı olmak zorundadır.

Bu olayın dışına çıkmak ve her modül için farklı tema sayfaları yapmak isterseniz yardımımıza Smart Code lar yetişiyor.

⚠️ Bu dosyadaki tüm plugin'ler `class/smarty3_plugins/` klasöründen okunur ve yorumlanır.
markdown
markdown::XCCODE::# XOOPS Smarty3 Plugins — Tam Referans Rehberi

> Bu dosyadaki tüm plugin'ler `class/smarty3_plugins/` klasöründen okunur ve yorumlanır.
> Plugin türleri: **compiler** (derleme anında), **function** (çalışma anında), **modifier** (değer dönüştürücü)

---

## İÇİNDEKİLER

1. [SAYFA & MODÜL KOŞUL KODLARI](#1-sayfa--modül-koşul-kodlari)
2. [COMPILER PLUGİNLER](#2-compiler-pluginler)
3. [FUNCTION PLUGİNLER](#3-function-pluginler)
4. [MODİFİER PLUGİNLER](#4-modifier-pluginler)
5. [XCREATE PLUGİNLERİ](#5-xcreate-pluginleri)
6. [GELİŞMİŞ KOMBİNASYONLAR](#6-gelişmiş-kombinasyonlar)

---

## 1. SAYFA & MODÜL KOŞUL KODLARI

> Bunlar Smarty'nin built-in değişkenleridir, ayrı plugin gerektirmez.

### 1.1 PHP_SELF ile Sayfa Kontrolü

```smarty
{{-- Sadece anasayfada göster --}}
<{if $smarty.server.PHP_SELF == '/index.php'}>
    içerik
<{/if}>

{{-- Anasayfa HARİÇ her yerde göster --}}
<{if $smarty.server.PHP_SELF != '/index.php'}>
    içerik
<{/if}>
```

### 1.2 SCRIPT_NAME ile Sayfa Kontrolü

```smarty
{{-- Anasayfa kontrolü (alternatif yöntem) --}}
<{if $SCRIPT_NAME == '/index.php'}>
    anasayfa içeriği
<{else}>
    diğer sayfa içeriği
<{/if}>
```

```smarty
<{if $SCRIPT_NAME == '/index.php'}>
    anasayfa içeriği

<{elseif $xoops_dirname == 'pm'}>
    pm modülü içeriği

<{elseif $xoops_dirname == 'publisher'}>
    publisher içeriği

<{elseif $xoops_dirname == 'newbb'}>
    forum içeriği

<{elseif $xoops_dirname == 'profile'}>
    profil içeriği

<{else}>
    diğer tüm sayfalar
<{/if}>
```

```smarty

<{if $SCRIPT_NAME == '/index.php'}>
    anasayfa içeriği

<{elseif $smarty.server.REQUEST_URI|strstr:'modules/pm/'}>
    pm modülü içeriği

<{elseif $smarty.server.REQUEST_URI|strstr:'modules/publisher/'}>
    publisher içeriği

<{elseif $smarty.server.REQUEST_URI|strstr:'modules/newbb/'}>
    forum içeriği

<{elseif $smarty.server.REQUEST_URI|strstr:'modules/profile/'}>
    profil içeriği

<{else}>
    diğer tüm sayfalar
<{/if}>

```

### 1.3 REQUEST_URI + strstr ile Modül Kontrolü

```smarty
{{-- Tek modülde göster --}}
<{if $smarty.server.REQUEST_URI|strstr:'modules/profile/'}>
    içerik
<{/if}>

{{-- İki modülde göster (OR) --}}
<{if $smarty.server.REQUEST_URI|strstr:'modules/profile/' or
    $smarty.server.REQUEST_URI|strstr:'modules/publisher/'}>
    içerik
<{/if}>

{{-- Üç modülde göster --}}
<{if $smarty.server.REQUEST_URI|strstr:'modules/profile/' or
    $smarty.server.REQUEST_URI|strstr:'modules/publisher/' or
    $smarty.server.REQUEST_URI|strstr:'modules/newbb/'}>
    içerik
<{/if}>

{{-- Belirli modülü HARİÇ tut --}}
<{if !($smarty.server.REQUEST_URI|strstr:'modules/profile/')}>
    içerik
<{/if}>

{{-- Belirli spesifik dosya kontrolü --}}
<{if $smarty.server.REQUEST_URI|strstr:'modules/publisher/article.php'}>
    sadece makale detay sayfasında
<{/if}>
```

### 1.4 xoops_requesturi ile Klasör/Dosya Kontrolü

```smarty
{{-- Modül klasörünü hariç tut --}}
<{if $xoops_requesturi != '/modules/newbb/'}>
    içerik
<{/if}>

{{-- Spesifik dosyayı hariç tut --}}
<{if $xoops_requesturi != '/modules/TDMDownloads/index.php'}>
    içerik
<{/if}>
```

### 1.5 $xoops_dirname ile Modül Adı Kontrolü

```smarty
{{-- Tek modül --}}
<{if $xoops_dirname == 'publisher'}>
    içerik
<{/if}>

{{-- İki modül --}}
<{if $xoops_dirname == 'publisher' or $xoops_dirname == 'profile'}>
    içerik
<{/if}>

{{-- Belirli modülü hariç tut --}}
<{if $xoops_dirname != 'newbb'}>
    içerik
<{/if}>

{{-- Birden fazla modülü hariç tut --}}
<{if $xoops_dirname != 'newbb' and $xoops_dirname != 'system'}>
    içerik
<{/if}>
```

### 1.6 Kullanıcı Durumu Kontrolü

```smarty
{{-- Giriş yapmış kullanıcıya göster --}}
<{if $xoops_isuser}>
    üye içeriği
<{/if}>

{{-- Misafire göster --}}
<{if !$xoops_isuser}>
    Giriş Yap | Kayıt Ol
<{/if}>

{{-- Sadece adminlere göster --}}
<{if $xoops_isadmin}>
    Admin paneli
<{/if}>
```

### 1.7 Blok Varlığı Kontrolü

```smarty
{{-- Sağ blok varsa 9 kolon, yoksa 12 kolon --}}
<{if $xoBlocks.canvas_right}>
<div class="col-lg-9">
<{else}>
<div class="col-lg-12">
<{/if}>
    <{$xoops_contents}>
</div>

{{-- Sol blok kontrolü --}}
<{if $xoBlocks.canvas_left}>
<div class="col-lg-9">
<{else}>
<div class="col-lg-12">
<{/if}>
    <{$xoops_contents}>
</div>
```

### 1.8 IF / ELSEIF / ELSE Zincirleri

```smarty
{{-- Modüle göre başlık ikonu --}}
<{if $xoops_dirname == 'system'}>
    <i class="fa fa-cogs"></i> Sistem
<{elseif $xoops_dirname == 'publisher'}>
    <i class="fa fa-folder-open"></i> Makaleler
<{elseif $xoops_dirname == 'profile'}>
    <i class="fa fa-user"></i> Profil
<{elseif $xoops_dirname == 'pm'}>
    <i class="fa fa-envelope"></i> Mesajlar
<{elseif $xoops_dirname == 'newbb'}>
    <i class="fa fa-comments"></i> Forum
<{elseif $xoops_dirname == 'contact'}>
    <i class="fa fa-map-marker"></i> İletişim
<{else}>
    <i class="fa fa-home"></i> <{$xoops_dirname}>
<{/if}>
```

### 1.9 AND + OR Kombinasyonları

```smarty
{{-- Giriş yapmış VE publisher sayfasında --}}
<{if $xoops_isuser and $xoops_dirname == 'publisher'}>
    içerik
<{/if}>

{{-- Anasayfa VEYA profil modülünde --}}
<{if $SCRIPT_NAME == '/index.php' or
    $smarty.server.REQUEST_URI|strstr:'modules/profile/'}>
    içerik
<{/if}>

{{-- Giriş yapmış VE (publisher VEYA profile modülünde) --}}
<{if $xoops_isuser and
    ($xoops_dirname == 'publisher' or $xoops_dirname == 'profile')}>
    içerik
<{/if}>

{{-- Admin DEĞİL ama giriş yapmış --}}
<{if $xoops_isuser and !$xoops_isadmin}>
    normal üye içeriği
<{/if}>
```

### 1.10 Farklı Header/Layout Yükleme

```smarty
<{if $SCRIPT_NAME == '/index.php'}>
    <{includeq file="$theme_name/header_home.html"}>
<{elseif $xoops_dirname == 'newbb'}>
    <{includeq file="$theme_name/header_forum.html"}>
<{else}>
    <{includeq file="$theme_name/header.html"}>
<{/if}>
```

### 1.11 Tam Layout Senaryosu (Gelişmiş)

```smarty
<div class="row">

    {{-- Forum sayfasında sol bloğu gizle --}}
    <{if $xoops_requesturi != '/modules/newbb/'}>
    <div class="col-lg-3">
        sol bloklar
    </div>
    <{/if}>

    {{-- Anasayfa: orta+sağ ayrı | Forum: tam genişlik | Diğer: 9 kolon --}}
    <{if $SCRIPT_NAME == '/index.php'}>

        <div class="col-lg-6">anasayfa orta</div>
        <div class="col-lg-3">anasayfa sağ blok</div>

    <{elseif $xoops_dirname == 'newbb'}>

        <div class="col-lg-12">forum tam genişlik</div>

    <{else}>

        <div class="col-lg-9">
            <{$xoops_contents}>
        </div>

    <{/if}>
</div>
```

---

## 2. COMPILER PLUGİNLER

> Derleme anında çalışır, statik URL üretir. `<{ }>` içinde doğrudan kullanılır.

### 2.1 `xoAppUrl` — Uygulama URL'si

Xoops'un URL rewriting kurallarına göre modül/sayfa URL'si üretir.

```smarty
{{-- Fiziksel path'ten URL üret --}}
<a href="<{xoAppUrl 'modules/publisher/index.php'}>">Makaleler</a>

<a href="<{xoAppUrl 'modules/newbb/index.php'}>">Forum</a>

<a href="<{xoAppUrl 'userinfo.php'}>">Profil</a>

{{-- Slash ile başlayan path --}}
<a href="<{xoAppUrl '/modules/contact/index.php'}>">İletişim</a>
```

### 2.2 `xoImgUrl` — Tema Kaynak URL'si

Tema'nın override ettiği kaynakları önce temada arar, yoksa varsayılana döner.
Tema inheritance sistemini destekler.

```smarty
{{-- Tema'dan resim URL'si --}}
<img src="<{xoImgUrl 'images/logo.png'}>" alt="Logo">

<link rel="stylesheet" href="<{xoImgUrl 'css/style.css'}>">

<script src="<{xoImgUrl 'js/main.js'}>"></script>
```

### 2.3 `xoAdminIcons` — Admin Panel İkonları

System modülündeki admin ikonlarının URL'sini döner.

```smarty
<img src="<{xoAdminIcons 'add.png'}>" alt="Ekle">
<img src="<{xoAdminIcons 'edit.png'}>" alt="Düzenle">
<img src="<{xoAdminIcons 'delete.png'}>" alt="Sil">
```

### 2.4 `xoAdminNav` — Admin Breadcrumb İkonları

System modülündeki breadcrumb ikonlarının URL'sini döner.

```smarty
<img src="<{xoAdminNav 'home.png'}>" alt="Ana Sayfa">
```

### 2.5 `xoModuleIcons16` / `xoModuleIcons32` / `xoModuleIconsBookmarks`

Modül ikonlarının URL'sini döner (16px, 32px ve bookmark boyutları).

```smarty
<img src="<{xoModuleIcons16 'publisher'}>" alt="Publisher">
<img src="<{xoModuleIcons32 'newbb'}>" alt="Forum">
<img src="<{xoModuleIconsBookmarks 'system'}>" alt="Sistem">
```

---

## 3. FUNCTION PLUGİNLER

> Çalışma anında çağrılır, Smarty değişkeni atar veya HTML çıktısı üretir.

### 3.1 `xoUserInfo` — Kullanıcı Bilgisi (UID ile)

Belirtilen UID'ye ait kullanıcı bilgisini bir template değişkenine atar.

**Döndürdüğü alanlar:** `uname`, `name`, `email`, `user_avatar`, `url`, `posts`, `user_from`, `user_occ`, `user_intrest`, `bio`, `user_sig`

```smarty
{{-- UID 42 için kullanıcı bilgisi çek --}}
<{xoUserInfo uid=42 assign=uInfo}>
<p>Kullanıcı: <{$uInfo.uname}></p>
<p>Email: <{$uInfo.email}></p>
<p>Gönderi: <{$uInfo.posts}></p>
<img src="<{$xoops_url}>/uploads/avatars/<{$uInfo.user_avatar}>" alt="Avatar">

{{-- Mevcut giriş yapmış kullanıcı (uid belirtmeden) --}}
<{xoUserInfo assign=benimBilgim}>
Merhaba, <{$benimBilgim.uname}>!
```

### 3.2 `xoMemberInfo` — Mevcut Üye Bilgisi

Giriş yapmış kullanıcının seçili alanlarını atar. Giriş yapılmamışsa sadece `uname` (anonymous) döner.

```smarty
{{-- Tüm alanları çek (varsayılan) --}}
<{xoMemberInfo assign=member}>
<p><{$member.uname}></p>
<p><{$member.email}></p>

{{-- Sadece belirli alanları çek --}}
<{xoMemberInfo assign=m infos="uname|email|user_avatar|posts">
<span>Üye: <{$m.uname}> (<{$m.posts}> gönderi)</span>

{{-- Kullanılabilir tüm alanlar --}}
{{-- uname | name | email | user_avatar | url | user_icq | user_aim --}}
{{-- user_yim | user_msnm | posts | user_from | user_occ | user_intrest | bio | user_sig --}}
```

### 3.3 `xoInboxCount` — Gelen Kutusu Sayacı

Mevcut kullanıcının okunmamış mesaj sayısını ve toplam mesaj sayısını döner.
Oturum cache'i kullanır (60 saniye).

```smarty
{{-- Direkt ekrana bas --}}
<{xoInboxCount}>

{{-- Değişkene ata --}}
<{xoInboxCount assign='okunmamis' total='toplam_mesaj'}>

<{if $okunmamis > 0}>
    <span class="badge"><{$okunmamis}></span>
<{/if}>
Gelen kutusu: <{$okunmamis}> okunmamış / <{$toplam_mesaj}> toplam
```

### 3.4 `xoStats` — Site İstatistikleri

Site genelindeki üye ve aktivite istatistiklerini atar. 30 dakika cache'lenir.

**Döndürdüğü değişkenler:**

| Değişken | Açıklama |
|---|---|
| `$latestMemberName` | En yeni üyenin adı |
| `$latestMemberUname` | En yeni üyenin kullanıcı adı |
| `$latestUid` | En yeni üyenin UID'si |
| `$totalOnline` | Anlık online kullanıcı sayısı |
| `$totalPosts` | Toplam gönderi sayısı |
| `$totalUsers` | Toplam üye sayısı |
| `$newUsersToday` | Bugün kayıt olan üye sayısı |
| `$newUsersYesterday` | Dün kayıt olan üye sayısı |

```smarty
<{xoStats}>

<div class="stats-panel">
    <p>Online: <strong><{$totalOnline}></strong></p>
    <p>Toplam Üye: <strong><{$totalUsers}></strong></p>
    <p>Toplam Gönderi: <strong><{$totalPosts}></strong></p>
    <p>Bugün Yeni: <strong><{$newUsersToday}></strong></p>
    <p>Dün Yeni: <strong><{$newUsersYesterday}></strong></p>
    <p>Son Üye:
        <a href="<{$xoops_url}>/userinfo.php?uid=<{$latestUid}>">
            <{$latestMemberUname}>
        </a>
    </p>
</div>
```

### 3.5 `xoBlock` — Bloğu ID ile Çağır

Herhangi bir bloğu ID numarasıyla tema içinde herhangi bir yerde göster.

```smarty
{{-- Sadece blok içeriği --}}
<{xoBlock id=1}>

{{-- Sadece blok başlığı --}}
<{xoBlock id=1 display="title"}>

{{-- Çalıştır ama gösterme (cron/online bloklar için) --}}
<{xoBlock id=7 display="none"}>

{{-- Belirli gruplara göster (0=anonim, 1=admin) --}}
<{xoBlock id=5 groups="0|1"}>

{{-- Cache süresini override et (saniye) --}}
<{xoBlock id=3 cache=3600}>

{{-- Blok seçeneklerini override et --}}
<{xoBlock id=600 options="100|100|s_poweredby.gif|0"}>
```

### 3.6 `xoPageNav` — Sayfalama Navigasyonu

Özel sayfalama HTML'i üretir.

```smarty
<{xoPageNav
    itemsCount=$toplam_kayit
    pageSize=$sayfa_basi_kayit
    offset=$baslangic
    linksCount=5
    url="index.php?cat=5&offset=%s"
    class="my-pagenav"
}>
```

### 3.7 `xoops_link` — Modül İçi URL Oluşturma

Mevcut modüle göre URL üretir, GET/POST parametrelerini aktarabilir.

```smarty
{{-- Mevcut modülde başka sayfaya git --}}
<a href="<{xoops_link page='viewcat.php' urlvars='cid,orderby=titleA'}>">Kategori</a>

{{-- Başka modüle git --}}
<a href="<{xoops_link module='publisher' page='index.php'}>">Haberler</a>

{{-- Mevcut GET parametrelerini koru, bazılarını değiştir --}}
<a href="<{xoops_link urlvars='cid,orderby=dateD,start=0'}>">Tarihe Göre</a>
```

**urlvars parametresi kuralları:**
- `cid` → mevcut değeri koru
- `orderby=titleA` → değeri titleA yap
- `start=` → değeri boş yap (sıfırla)

### 3.8 `year` — Güncel Yıl

```smarty
© <{year}> Tüm Hakları Saklıdır.
```

### 3.9 `securityToken` — Güvenlik Tokeni (CSRF)

Form güvenliği için CSRF token üretir.

```smarty
<form method="post">
    <{securityToken}>
    <!-- diğer form alanları -->
</form>
```

### 3.10 `ray` / `ray_context` / `ray_dump` / `ray_table` — Debug Araçları

Ray debug uygulamasıyla hata ayıklama için kullanılır (sadece geliştirme ortamında).

```smarty
{{-- Değişkeni Ray'e gönder --}}
<{ray var=$xoops_contents}>
<{ray_dump var=$xoBlocks}>
<{ray_context}>
<{ray_table var=$xoops_contents}>
```

---

## 4. MODİFİER PLUGİNLER

> Pipe `|` operatörüyle değişkenlere uygulanır.

### 4.1 `truncate` — Karakter Sayısına Göre Kes (Çok Dilli)

Metni belirtilen karakter sayısında keser. UTF-8 ve çok dilli (Türkçe, Arapça vb.) destekler.

```smarty
{{-- Varsayılan: 80 karakter, "…" ile --}}
<{$item.description|truncate}>

{{-- 150 karakterde kes --}}
<{$item.description|truncate:150}>

{{-- Özel son ek --}}
<{$item.description|truncate:100:'...devamı'}>

{{-- Kelime ortasından kesmeye izin ver --}}
<{$item.description|truncate:100:'...':true}>

{{-- Ortadan kes (başı + sonu göster) --}}
<{$item.description|truncate:100:'...':false:true}>
```

### 4.2 `truncateHtml` — HTML İçeriği Kelime Sayısına Göre Kes

HTML etiketlerini bozmadan, belirtilen kelime sayısında keser. HTMLPurifier kullanır.

```smarty
{{-- 30 kelimede kes (HTML'i koru) --}}
<{$item.full_content|truncateHtml:30}>

{{-- 50 kelime, özel son ek --}}
<{$item.full_content|truncateHtml:50:'[devamını oku]'}>
```

### 4.3 `strstr` — İçinde Geçiyor mu? (Built-in Smarty)

Koşullarda URL/string içinde bir değer var mı kontrol eder.

```smarty
{{-- Değişkende belirli string var mı --}}
<{if $smarty.server.REQUEST_URI|strstr:'modules/publisher/'}>
    publisher modülünde
<{/if}>

{{-- Kategori adında kelime var mı --}}
<{if $category.name|strstr:'Teknoloji'}>
    teknoloji kategorisi
<{/if}>
```

### 4.4 Built-in Smarty Modifierleri (Hatırlatma)

```smarty
{{-- Büyük harf --}}
<{$uname|upper}>

{{-- Küçük harf --}}
<{$uname|lower}>

{{-- Kelime ilk harflerini büyüt --}}
<{$title|capitalize}>

{{-- HTML encode --}}
<{$content|escape:'html'}>

{{-- Tarih formatla --}}
<{$item.created|date_format:'%d.%m.%Y'}>
<{$item.created|date_format:'%d %B %Y %H:%M'}>

{{-- Varsayılan değer --}}
<{$bio|default:'Biyografi eklenmemiş'}>

{{-- Strip HTML tagları --}}
<{$content|strip_tags}>

{{-- NL2BR (satır sonu → br) --}}
<{$content|nl2br}>

{{-- Sayı formatla --}}
<{$price|number_format:2:',':'.'}> TL

{{-- Regex replace --}}
<{$phone|regex_replace:'/[^0-9]/':''}>
```

---

## 5. XCREATE PLUGİNLERİ

> Xcreate modülüne özgü gelişmiş plugin'ler. Dinamik içerik sistemini temaya bağlar.

### 5.1 `xcreate` — Xcreate İçeriklerini Listele

Xcreate modülündeki kayıtları sorgular, `$xcreate_items` değişkenine atar.

```smarty
{{-- Kategori 2'den 10 kayıt (tarih sıralı) --}}
<{xcreate category="2" limit="10" order="date" from="0"}>

{{-- Rastgele 5 kayıt --}}
<{xcreate category="3" limit="5" order="random"}>

{{-- En çok görüntülenen --}}
<{xcreate category="1" limit="8" order="hits"}>

{{-- Özel template ile --}}
<{xcreate category="2" limit="5" template="my_custom_tpl"}>

{{-- Sayfalama için offset --}}
<{xcreate category="2" limit="10" from="10"}>
```

**Sıralama seçenekleri:** `date` (varsayılan), `updated`, `hits`, `views`, `title`, `random`, `rand`

**Template'de kullanım:**

```smarty
<{xcreate category="2" limit="6" order="date"}>

<{foreach item=item from=$xcreate_items}>
    <div class="card">
        <h3><a href="<{$item.url}>"><{$item.title}></a></h3>
        <p><{$item.description}></p>

        {{-- Temel alanlar --}}
        <small>
            Kategori: <{$item.category_name}> |
            Tarih: <{$item.created|date_format:'%d.%m.%Y'}> |
            Görüntülenme: <{$item.hits}>
        </small>

        {{-- Özel alan — kısa alias (ham değer) --}}
        Fiyat: <{$item.f_fiyat}>

        {{-- Özel alan — render edilmiş HTML --}}
        <{$item.fd_resim}>

        {{-- Özel alan — alan etiketi --}}
        <label><{$item.fl_fiyat}>:</label>

        {{-- Geriye dönük uyumlu (eski yöntem) --}}
        <{$item.fiyat}>

        {{-- Repeatable (çoklu değer) alan --}}
        <{foreach item=foto from=$item.f_galeri}>
            <img src="<{$foto}>" alt="">
        <{/foreach}>

        {{-- Tam yapı (fields dizisi) --}}
        <{$item.fields.fiyat.label}>: <{$item.fields.fiyat.value}>
        <{$item.fields.fiyat.value_display}>

        <a href="<{$item.url}>">Devamını Oku →</a>
        <a href="<{$item.category_url}>">Kategoriye Git</a>
    </div>
<{/foreach}>
```

**$item değişkenleri özeti:**

| Değişken | Açıklama |
|---|---|
| `$item.id` | Kayıt ID |
| `$item.title` | Başlık |
| `$item.description` | Açıklama |
| `$item.url` | Detay sayfası URL'si |
| `$item.category_name` | Kategori adı |
| `$item.category_id` | Kategori ID'si |
| `$item.category_url` | Kategori URL'si |
| `$item.created` | Oluşturma tarihi (unix timestamp) |
| `$item.updated` | Güncelleme tarihi (unix timestamp) |
| `$item.hits` | Görüntülenme sayısı |
| `$item.f_ALANADI` | Özel alan ham değeri |
| `$item.fd_ALANADI` | Özel alan render edilmiş HTML |
| `$item.fl_ALANADI` | Özel alan etiketi |
| `$item.fields.ALANADI.value` | Tam yapı — ham değer |
| `$item.fields.ALANADI.value_display` | Tam yapı — HTML |
| `$item.fields.ALANADI.values` | Tam yapı — tüm değerler dizisi |

### 5.2 `xcreate_block` — Xcreate Bloğunu Çağır

Admin panelinde tanımlanmış Xcreate bloklarını tema içinde herhangi bir yerde çağırır.

```smarty
{{-- ID ile çağır --}}
<{xcreate_block id="5"}>

{{-- İsim ile çağır --}}
<{xcreate_block name="son-haberler"}>

{{-- DB ayarlarını override et --}}
<{xcreate_block name="son-haberler" limit="5" order="hits"}>
<{xcreate_block name="son-haberler" limit="3" order="random" from="0"}>
```

**Desteklenen layout türleri:** `grid`, `list`, `slider`, `masonry`, `ticker`, `magazine`, `cardflip`, `timeline`, `carousel`, `accordion`, `table`, `kanban`, `mappins`

**Template'de kullanım ($xcreate_block_items ve $xcreate_block_config):**

```smarty
<{xcreate_block name="son-haberler"}>

{{-- Config bilgisi --}}
<h2><{$xcreate_block_config.block_title}></h2>
<p>Layout: <{$xcreate_block_config.layout}></p>

{{-- Items listesi --}}
<{foreach item=item from=$xcreate_block_items}>
    <div>
        <a href="<{$item.url}>"><{$item.title}></a>

        {{-- Resim alanı otomatik tespit --}}
        <{if $item._item_image}>
            <img src="<{$item._item_image}>" alt="<{$item.title}>">
        <{/if}>

        {{-- Config'den göster/gizle kontrolü --}}
        <{if $xcreate_block_config.show_date}>
            <time><{$item.created|date_format:'%d.%m.%Y'}></time>
        <{/if}>

        <{if $xcreate_block_config.show_desc}>
            <p><{$item.description|truncate:120}></p>
        <{/if}>

        <{if $xcreate_block_config.show_hits}>
            <small>👁 <{$item.hits}></small>
        <{/if}>
    </div>
<{/foreach}>
```

**$xcreate_block_config değişkenleri:**

| Değişken | Açıklama |
|---|---|
| `block_id` | Blok ID |
| `block_title` | Blok başlığı |
| `layout` | Görünüm türü (grid, list vb.) |
| `limit` | Kayıt limiti |
| `order` | Sıralama |
| `cat_id` | Kategori ID |
| `cols` | Grid sütun sayısı |
| `show_img` | Resim göster? |
| `show_date` | Tarih göster? |
| `show_desc` | Açıklama göster? |
| `show_hits` | Görüntülenme göster? |
| `autoplay` | Slider otomatik geçiş? |
| `speed` | Slider hızı (ms) |
| `count` | Toplam kayıt sayısı |

### 5.3 Xcreate Alan Tipleri (fd_ ile Render)

`fd_` prefix'i ile bu alanlar otomatik HTML'e dönüştürülür:

| Alan Tipi | Açıklama |
|---|---|
| `image` | `<img>` etiketi |
| `file` | İndirme linki |
| `gallery` | Grid galeri (lightbox hazır) |
| `url` | Tıklanabilir link |
| `email` | mailto linki |
| `editor` | Ham HTML (WYSIWYG çıktısı) |
| `code` | Prism.js ile syntax highlight |
| `range` | Progress bar görünümlü slider |
| `progress` | Renkli progress bar |
| `badge` | Renkli rozet |
| `timeline` | Dikey zaman çizelgesi |
| `group` | Tablo görünümlü veri grubu |
| `table` | HTML tablosu |
| `map` | Leaflet.js harita |
| `fileinfo` | Dosya bilgi kartı (indirme sayacı ile) |
| `social` | Sosyal medya ikon linkleri |
| `openinghours` | Haftalık çalışma saatleri tablosu |
| `quote` | Alıntı/blockquote |
| `checklist` | İlerleme çubuğu ile yapılacaklar |
| `faq` | Accordion SSS listesi |
| `embed` | YouTube/Vimeo/iframe embed |

---

## 6. GELİŞMİŞ KOMBİNASYONLAR

### 6.1 İstatistik Bloğu + Kullanıcı Durumu

```smarty
<{xoStats}>
<{if $xoops_isuser}>
    <{xoMemberInfo assign=m infos="uname|user_avatar|posts"}>
    <{xoInboxCount assign='unread'}>

    <div class="user-panel">
        <img src="<{$xoops_url}>/uploads/avatars/<{$m.user_avatar}>" alt="">
        <strong><{$m.uname}></strong>
        (<{$m.posts}> gönderi)
        <{if $unread > 0}>
            <span class="badge"><{$unread}> yeni mesaj</span>
        <{/if}>
    </div>
<{else}>
    Online: <{$totalOnline}> | Üye: <{$totalUsers}>
<{/if}>
```

### 6.2 Modüle Özel Blok Yerleşimi

```smarty
{{-- Anasayfada xcreate_block, diğerlerinde xoBlock göster --}}
<{if $SCRIPT_NAME == '/index.php'}>
    <{xcreate_block name="anasayfa-slider"}>
<{elseif $xoops_dirname == 'publisher'}>
    <{xoBlock id=12}>
<{else}>
    <{xoBlock id=8}>
<{/if}>
```

### 6.3 İçerik + Blok Dinamik Genişlik

```smarty
<div class="row">
    <{if $xoBlocks.canvas_left}>
    <div class="col-lg-3">
        <{foreach item=block from=$xoBlocks.canvas_left}>
            <{includeq file="$theme_name/theme_blockleft.tpl"}>
        <{/foreach}>
    </div>
    <{/if}>

    <{if $xoBlocks.canvas_left and $xoBlocks.canvas_right}>
        <div class="col-lg-6">
    <{elseif $xoBlocks.canvas_left or $xoBlocks.canvas_right}>
        <div class="col-lg-9">
    <{else}>
        <div class="col-lg-12">
    <{/if}>
        <{$xoops_contents}>
    </div>

    <{if $xoBlocks.canvas_right}>
    <div class="col-lg-3">
        <{foreach item=block from=$xoBlocks.canvas_right}>
            <{includeq file="$theme_name/theme_blockright.tpl"}>
        <{/foreach}>
    </div>
    <{/if}>
</div>
```

### 6.4 Xcreate + Sayfa Koşulu

```smarty
{{-- Sadece anasayfada xcreate slider göster --}}
<{if $SCRIPT_NAME == '/index.php'}>
    <{xcreate category="1" limit="5" order="date"}>
    <div class="slider">
        <{foreach item=item from=$xcreate_items}>
            <div class="slide">
                <{$item.fd_kapak_resim}>
                <h2><{$item.title|truncate:60}></h2>
                <p><{$item.description|truncate:120}></p>
                <a href="<{$item.url}>">Oku →</a>
            </div>
        <{/foreach}>
    </div>
<{/if}>

{{-- Publisher sayfasında makaleler sidebar'ı --}}
<{if $xoops_dirname == 'publisher'}>
    <{xcreate category="2" limit="5" order="hits"}>
    <aside>
        <h4>Popüler Makaleler</h4>
        <{foreach item=item from=$xcreate_items}>
            <a href="<{$item.url}>"><{$item.title|truncate:50}></a>
        <{/foreach}>
    </aside>
<{/if}>
```

### 6.5 Kullanıcıya Özel İçerik

```smarty
<{xoMemberInfo assign=m infos="uname|posts|user_from"}>
<{xoStats}>

<div class="welcome">
    <{if $xoops_isadmin}>
        <p>Merhaba <strong>Admin <{$m.uname}></strong>!</p>
        <a href="<{xoAppUrl 'modules/system/admin.php'}>">Admin Paneli</a>

    <{elseif $xoops_isuser}>
        <p>Merhaba <{$m.uname}> (<{$m.posts}> gönderi)</p>
        <{xoInboxCount assign='unread'}>
        <{if $unread > 0}>
            <a href="<{xoAppUrl 'modules/pm/index.php'}>">
                📧 <{$unread}> yeni mesaj
            </a>
        <{/if}>

    <{else}>
        <p>Sitemize Hoş Geldiniz!</p>
        <p>Toplam <{$totalUsers}> üye, <{$totalOnline}> kişi online</p>
        <a href="<{xoAppUrl 'register.php'}>">Üye Ol</a> |
        <a href="<{xoAppUrl 'user.php'}>">Giriş Yap</a>
    <{/if}>
</div>
```

---

## HIZLI BAŞVURU TABLOSU

| Kullanım Amacı | Kod |
|---|---|
| Anasayfa kontrolü | `<{if $SCRIPT_NAME == '/index.php'}>` |
| Modül URL kontrolü | `<{if $smarty.server.REQUEST_URI\|strstr:'modules/xyz/'}>` |
| Modül adı kontrolü | `<{if $xoops_dirname == 'publisher'}>` |
| Giriş kontrolü | `<{if $xoops_isuser}>` |
| Admin kontrolü | `<{if $xoops_isadmin}>` |
| Sağ blok var mı | `<{if $xoBlocks.canvas_right}>` |
| Uygulama URL'si | `<{xoAppUrl 'modules/xyz/index.php'}>` |
| Tema resmi URL'si | `<{xoImgUrl 'images/logo.png'}>` |
| Kullanıcı bilgisi | `<{xoMemberInfo assign=m infos="uname\|email"}>` |
| Kullanıcı bilgisi (UID) | `<{xoUserInfo uid=42 assign=u}>` |
| Mesaj sayısı | `<{xoInboxCount assign='unread'}>` |
| Site istatistikleri | `<{xoStats}>` |
| Blok çağır | `<{xoBlock id=5}>` |
| Yıl | `<{year}>` |
| Metin kes (karakter) | `<{$text\|truncate:100}>` |
| Metin kes (kelime, HTML) | `<{$html\|truncateHtml:30}>` |
| Xcreate liste | `<{xcreate category="2" limit="10"}>` |
| Xcreate blok | `<{xcreate_block name="blok-adi"}>` |

---

*XOOPS Smarty3 Plugins Referans Rehberi — smarty3_plugins klasöründen üretilmiştir.*
👨🏻
Author: Admin
· 📅 Date: 04/29/2026 ·
👁️ Views: 56

Puanlama

✍️

Kendi İpucunuzu Paylaşın

XOOPS deneyimlerinizi toplulukla paylaşın. Her katkı onlarca geliştiriciyi kolaylaştırabilir.

+ İpucu Gönder
Kurallar ve yönergeler →