Savant Tema Motoru ve Kullanımı

Savant Tema Motoru ve Kullanımı

Php ile site hazırlarken çoğu zaman php ve html kodlarını aynı dosya içerisine yazarız. Daha sonra html kodlarını değiştirmek istediğimizde ise oldukça zahmete katlanmak zorunda kalırız. Bu durumda php tema motorları imdadımıza yetişiyor ve php ile html kodlarını birbirinden ayırarak daha rahat bir çalışma ortamı sağlıyor. Bu yazımda php uygulamalarınızda kullanabileceğiniz güçlü ama hafif, nesne yönelimli programlamayla yazılmış Savant tema motorundan bahsedeceğim.

Tema motorlarıyla çalışmak istediğimiz zaman karşımıza çıkan en büyük sorun tema motoruna özgü kodlama stilini öğrenmek zorunda oluşumuzdur. İşte Savant’ın diğerlerinden farkı burada ortaya çıkıyor. Savant kendine özgü kodlar değil, php’nin kendisini kullanıyor. Yani tema dosyanızın içerisinde özgürce php kodlarını kullanabiliyorsunuz. Örneğin smarty kullanarak yapılan bir sistemde bir değişkeni sayfaya yazdırmak için {$degisken} gibi bir ifade yazarken, Savant ile <?php echo $this->degisken ?> şeklinde yazıyoruz. Daha kolay anlamanız için bir örnek yapalım.

Önce Savant’ın sitesindeki indirme bölümünden gerekli dosyaları indiriyoruz. İndirdiğimiz dosyayı winrar benzeri programla açarak içerisindeki Savant3.php dosyasını ve Savant3 klasörünü çalışmak istediğimiz dizine çıkarıyoruz. Şimdi tek yapmamız gereken Savant3.php dosyasını kullanacağımız php dosyasına çağırarak kullanmaya başlamak. Aşağıdaki örneğimiz index.php ve kitap.html olmak üzere 2 dosyadan oluşuyor.
index.php


<?php
// Savant3 sınıf dosyasını çağırıyoruz ve örneğimizi oluşturuyoruz.
require_once 'Savant3.php';
$tpl = new Savant3();
// Başlığımızı oluşturuyoruz.
$baslik = "Çok satan kitaplar";
// Verilerimizin bulunduğu dizimizi oluşturuyoruz.
$liste = array(
array(
'yazar' => 'Ayşe Kulin',
'kitap' => 'Umut &amp;amp; Hayat Akan Bir Sudur'
),
array(
'yazar' => 'Hakan Yılmaz Çebi',
'kitap' => 'İsrail'in Şifresi'
),
array(
'yazar' => 'Ahmet Ümit',
'kitap' => 'Bab-ı Esrar'
)
);
// Örneğimize değerlerimizi atıyoruz.
$tpl->baslik = $baslik;
$tpl->kitaplar = $liste;
// Atanmış değerlerimizi kullanarak sayfamızı görüntülüyoruz.
$tpl->display('kitap.html');
?>

kitap.html


<html>
<head>
<title><?php echo $this->eprint($this->baslik); ?></title>
</head>
<body>
<?php if (is_array($this->kitaplar)){ ?>
<table>
<tr>
<th>Yazar</th>
<th>Kitap</th>
</tr>
<?php foreach ($this->kitaplar as $key => $val): ?>
<tr>
<td><?php echo $val['yazar']; ?></td>
<td><?php echo $val['kitap']; ?></td>
</tr>
<?php endforeach; ?>
</table>
<?php }else{ ?>
<p>Gösterilecek kayıt yok.</p>
<?php } ?>
</body>
</html>

index.php’yi adres satırından çağırdığımızda aşağıdaki gibi bir html çıktısıyla karşılaştıysanız örneğimiz sorunsuz bir şekilde çalışıyor demektir.


<html>
<head>
<title>Çok satan kitaplar</title>
</head>
<body>
<table>
<tr>
<th>Yazar</th>
<th>Kitap</th>
</tr>
<tr>
<td>Ayşe Kulin</td>
<td>Umut &amp;amp; Hayat Akan Bir Sudur</td>
</tr>
<tr>
<td>Hakan Yılmaz Çebi</td>
<td>İsrail'in Şifresi</td>
</tr>
<tr>
<td>Ahmet Ümit</td>
<td>Bab-ı Esrar</td>
</tr>
</table>
</body>
</html>

kitap.html dosyasında değişkenleri yazdırırken klasik echo fonksiyonu ve Savant ile gelen eprint fonksiyonu olmak üzere iki farklı yöntem kullandık. eprint fonksiyonunu kullanarak çarpraz site betikleme açığına karşı güvenliğinizi sağlayabilirsiniz. Bu fonksiyon değişkenlerdeki verileri filtrelememizi sağlıyor. ( Örneğin html kodlarındaki <> karakterlerini ).

Yeri gelmişken hatırlatayım. Savant bir derleme motoru değil ve yukarıdaki örneğimizde olduğu gibi tema dosyası ile çalıştığımız php dosyası aynı klasörde ise herhangi bir ayar yapmak gerekmiyor. Fakat tema dosyalarını farklı bir klasörde toplamak istiyorsanız küçük bir ayar yapmalısınız. Tema dosyalarını /tema isimli bir klasöre attığımızı farzedersek yeni kodlarımız aşağıdaki gibi olmalı.


<?php
// Savant3 sınıf dosyasını çağırıyoruz ve örneğimizi oluşturuyoruz.
require_once 'Savant3.php';
$conf = array(
'template_path' =>'tema',
);
$tpl = new Savant3($conf);

Savant’ın bir diğer güzelliği ise eklenti desteğininde olması. Paketle birlikte ahref, image gibi bir kaç tane eklenti geliyor. İsterseniz kendi eklentilerinizi yazarak Savant’la birlikte kullanabiliyorsunuz.
Başlangıç için bu kadar bilgi yeterli olur sanırım. Daha fazla bilgi almak için Dökümantasyon ve API Dökümantasyonuna göz atabilirsiniz. Savant tema motorunu buradan indirebilirsiniz.  Bir başka yazıda görüşmek üzere.

Bu yazı en son 03 Aralık 2011 tarihinde düzenlenmiştir ve güncelliğini yitirmiş olabilir.

  • aybars

    helal valla süper bi yazı kadeş ellerine kollarına sağlık devam edicem takip etmeye

  • Atasözleri ve Anlamları

    Eline sağlık çok iyi bir düşünmenin sonucunda ortaya çıktığı apaçık ortada.

    Çok teşekkürler ve başarılar.

  • Candelibas

    2009'da böyle bir paylaşım yapılmış olmasına rağmen oldukça başarılı bir tema motoru.Controller - View ilişkisi gibi oldu. Teşekkürler.

blog comments powered by Disqus

© Mustafa Navruz 2011 0.0166 sn.

^ Başa Dön