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.
Örneklerde Smarty, aşağıda belirtilen dizinlere kurulmuş sayılarak anlatılmıştır.
Smarty demiş ki:- *nix makinaları için, /usr/local/lib/Smarty-v.e.r/
- ve Windows için, c:\webroot\libs\Smarty-v.e.r\
Kod:Smarty-v.e.r/ libs/ Smarty.class.php debug.tpl sysplugins/* (everything) plugins/* (everything)
PHP:<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>
PHP:<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>
PHP:<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>
Kod:;;;;;;;;;;;;;;;;;;;;;;;;; ; 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\"
PHP:<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 demiş ki:- 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.
Kod:/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
Smarty dizinini sitenizin web tarayıcı ile ulaşamayacı dizine kurmanızı öneririz.
Smarty, $compile_dir ve $cache_dir dizinleri için yazma(writable) yetkisine ihtiyaç duyar. (Windows kullanıcıları lütfen dikkate almayın.)
Kod: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.
index.tpl Örneği demiş ki:Kod:{* Smarty *} Hello {$name}, welcome to Smarty!
{* 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. - Şimdi de index.php dosyamızı Smarty'nin display() ve assign() fonksiyonlarını kullanarak oluşturalım
PHP:<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,
Son düzenleme yönetici tarafından yapıldı: