Kayıt
20 Mayıs 2007
Mesajlar
1.930
Beğeniler
1
Şehir
Balıkesir, Türkiye
Server
Takımı
Galatasaray
Smarty nedir?
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.

Smarty basit kurulumu?
  1. 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\
    Gerekli Smarty dosyaları
    Kod:
    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.
    Gerekli Smarty'yi betiğe tanıtma
    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>
    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.

    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>
    php.ini dosyasına Smarty dizinini ekleme
    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\"
    Smarty dizinini PHP fonksiyonu aracılığıyla tanıtma
    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>
  2. 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.
  3. 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.


    Gerekli dizinlere yazma(writable) yetkisi verme
    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/
  4. 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.
  5. Ş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>
  6. 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 :kalp:
Saygılarımla,
 
Son düzenleme yönetici tarafından yapıldı:
Yukarı Alt