
Smarty, PHP ile yazılmış bir şablon motorudur. Özellikle web geliştirirken tasarım ve yazılım süreçlerinin birbirinden bağımsız hale getirilmesini sağlayan bir araç olarak tanınmaktadır.

- Kopyalanacak dosyalar:
Smarty'nin indirdiğiniz dosyalarını istediğiniz(önerilen dizin: /libs/) bir klasöre kopyalayın. Smarty'nin .php uzantılı dosyalarını düzenlemenize gerek yoktur. Sadece yeni bir sürüm çıktığında eskisi ile değiştirme yapabilirsiniz.
[bilgi]Örneklerde Smarty, aşağıda belirtilen dizinlere kurulmuş sayılarak anlatılmıştır.[/bilgi] - *nix makinaları için, /usr/local/lib/Smarty-v.e.r/
- ve Windows için, c:\webroot\libs\Smarty-v.e.r\
Smarty-v.e.r/
libs/
Smarty.class.php
debug.tpl
sysplugins/* (everything)
plugins/* (everything)Smarty, /libs/ dizinine tam sistem dosya yoludur ve SMARTY_DIR adında bir PHP sabiti* kullanır. Temel olarak, eğer betiğin Smarty.class.php dosyasını buluyorsa, SMARTY_DIR sabitini atamana gerek yoktur. Bu nedenle Smarty.class.php senin include_path** değerine ekli/tanımlı ya da betiğinde geçerli bir dizinde değilse, SMARTY_DIR sabitini tanımlamalısın.
<span class="syntaxdefault"><?php<</span><span class="syntaxcomment">// NOT: Smarty'nin baş harfi büyüktür.<</span><span class="syntaxkeyword">require_once(</span><span class="syntaxstring">'Smarty.class.php'</span><span class="syntaxkeyword">);<</span><span class="syntaxdefault">$smarty </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> new Smarty</span><span class="syntaxkeyword">();<</span><span class="syntaxdefault">?></span>Yukarıdaki komut dosyasını çalıştırmayı deneyin. Eğer bir hata ile karşılaşırsanız ve bu hata Smarty.class.php'nin dizini ile ilgili ise aşağıdaki kodu deneyin.
<span class="syntaxdefault"><?php<</span><span class="syntaxcomment">//SMARTY'DE //SMARTY_DIR\\ DEĞİŞKENİNİ TANITMA<// *nix style (note capital 'S')<</span><span class="syntaxdefault">define</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'SMARTY_DIR'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'/usr/local/lib/Smarty-v.e.r/libs/'</span><span class="syntaxkeyword">);<<</span><span class="syntaxcomment">// windows style<</span><span class="syntaxdefault">define</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'SMARTY_DIR'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'c:/webroot/libs/Smarty-v.e.r/libs/'</span><span class="syntaxkeyword">);<<</span><span class="syntaxcomment">// hack version example that works on both *nix and windows<// Smarty is assumend to be in 'includes/' dir under current script<</span><span class="syntaxdefault">define</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'SMARTY_DIR'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">str_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"\\"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">"/"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">getcwd</span><span class="syntaxkeyword">()).</span><span class="syntaxstring">'/includes/Smarty-v.e.r/libs/'</span><span class="syntaxkeyword">);<<require_once(</span><span class="syntaxdefault">SMARTY_DIR </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> </span><span class="syntaxstring">'Smarty.class.php'</span><span class="syntaxkeyword">);<</span><span class="syntaxdefault">$smarty </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> new Smarty</span><span class="syntaxkeyword">();<</span><span class="syntaxdefault">?></span><span class="syntaxdefault"><?php<</span><span class="syntaxcomment">// *nix style (note capital 'S')<</span><span class="syntaxkeyword">require_once(</span><span class="syntaxstring">'/usr/local/lib/Smarty-v.e.r/libs/Smarty.class.php'</span><span class="syntaxkeyword">);<<</span><span class="syntaxcomment">// windows style<</span><span class="syntaxkeyword">require_once(</span><span class="syntaxstring">'c:/webroot/libs/Smarty-v.e.r/libs/Smarty.class.php'</span><span class="syntaxkeyword">);<<</span><span class="syntaxdefault">$smarty </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> new Smarty</span><span class="syntaxkeyword">();<</span><span class="syntaxdefault">?></span>
;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
; *nix: "/path1:/path2"
include_path = ".:/usr/share/php:/usr/local/lib/Smarty-v.e.r/libs/"
; Windows: "\path1;\path2"
include_path = ".;c:\php\includes;c:\webroot\libs\Smarty-v.e.r\libs\"<span class="syntaxdefault"><?php<</span><span class="syntaxcomment">// *nix<</span><span class="syntaxdefault">ini_set</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'include_path'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> ini_get</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'include_path'</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">PATH_SEPARATOR</span><span class="syntaxkeyword">.</span><span class="syntaxstring">'/usr/local/lib/Smarty-v.e.r/libs/'</span><span class="syntaxkeyword">);<<</span><span class="syntaxcomment">// windows<</span><span class="syntaxdefault">ini_set</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'include_path'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> ini_get</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'include_path'</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">PATH_SEPARATOR</span><span class="syntaxkeyword">.</span><span class="syntaxstring">'c:/webroot/lib/Smarty-v.e.r/libs/'</span><span class="syntaxkeyword">);<</span><span class="syntaxdefault">?></span>- Evet Smarty'yi betiğimize tanıttık ve sıra geldi betiğin için Smarty klasörlerini tanıtmaya.
- Smarty; templates/, templates_c/, configs/ ve cache/ adında varsayılan olarak dört dizin gerektirir.
- Bu dizinler Smarty'nin dahilindeki değişkenler aracılığıyla tanıtılabilir. Bu değişkenler: $template_dir, $compile_dir, $config_dir ve $cache_dir
- Her betik için Smarty'nin kullandığı farklı dizinler tanımlananız şiddetle tavsiye edilir.
- Bizim kurulum örneğimizde Smarty destekli ziyaretçi defteri betiği hazırlayacağız. Aşağıda aynı dizilimi kendi betiğin için de kullanabilirsin. Sadece /guestbook dizinlerini kendi betiğine göre düzenlemek.
/usr/local/lib/Smarty-v.e.r/libs/ Smarty.class.php debug.tpl sysplugins/* plugins/* /web/www.example.com/ guestbook/ templates/ index.tpl templates_c/ configs/ cache/ htdocs/ index.php
[uyari]Smarty dizinini sitenizin web tarayıcı ile ulaşamayacı dizine kurmanızı öneririz.[/uyari]
Gerekli dizinlere yazma(writable) yetkisi verme
[bilgi]Smarty, $compile_dir ve $cache_dir dizinleri için yazma(writable) yetkisine ihtiyaç duyar. (Windows kullanıcıları lütfen dikkate almayın.)[/bilgi]chown nobody:nobody /web/www.example.com/guestbook/templates_c/ chmod 770 /web/www.example.com/guestbook/templates_c/ chown nobody:nobody /web/www.example.com/guestbook/cache/ chmod 770 /web/www.example.com/guestbook/cache/ - Smarty'nin sonuç döndürebilmesi için $template_dir ile belirlediğiniz dizinde index.tpl dosyası oluşturmanız gerekir.
{* Smarty *} Hello {$name}, welcome to Smarty!
[bilgi]{* Smarty *} bir tema yorumudur yani tarayıcı tarafından döndürülmez. Bu gerekli değildir ancak büyük betiklerde kullanışlıdır.[/bilgi] - Şimdi de index.php dosyamızı Smarty'nin display() ve assign() fonksiyonlarını kullanarak oluşturalım
<span class="syntaxdefault"><?php<<</span><span class="syntaxkeyword">require_once(</span><span class="syntaxdefault">SMARTY_DIR </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> </span><span class="syntaxstring">'Smarty.class.php'</span><span class="syntaxkeyword">);<<</span><span class="syntaxdefault">$smarty </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> new Smarty</span><span class="syntaxkeyword">();<<</span><span class="syntaxdefault">$smarty</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">setTemplateDir</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'/web/www.example.com/guestbook/templates/'</span><span class="syntaxkeyword">);<</span><span class="syntaxdefault">$smarty</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">setCompileDir</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'/web/www.example.com/guestbook/templates_c/'</span><span class="syntaxkeyword">);<</span><span class="syntaxdefault">$smarty</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">setConfigDir</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'/web/www.example.com/guestbook/configs/'</span><span class="syntaxkeyword">);<</span><span class="syntaxdefault">$smarty</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">setCacheDir</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'/web/www.example.com/guestbook/cache/'</span><span class="syntaxkeyword">);<<</span><span class="syntaxdefault">$smarty</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">assign</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'name'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'Mahmut'</span><span class="syntaxkeyword">);<<</span><span class="syntaxcomment">//** un-comment the following line to show the debug console<//$smarty->debugging = true;<<</span><span class="syntaxdefault">$smarty</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">display</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'index.tpl'</span><span class="syntaxkeyword">);<<</span><span class="syntaxdefault">?></span> - Sonuç olarak, tarayıcınız ile index.php dosyasına eriştiğinizde "Hello Mahmut, welcome to Smarty!" yazısını görmeniz lazım.

Takıldığınız yerler, bilgi almak istediğiniz konularda yardımcı olurum ❤️
Saygılarımla,

