1. Reklam


    1. joysro
      ledas
      jungler
      keasro
      zeus
      karantina

PHP için tema motoru: Smarty


  1. MatthewMitchell

    MatthewMitchell Bilgiliyim rank8

    Kayıt:
    20 Mayıs 2007
    Mesajlar:
    1.949
    Beğenilen Mesajlar:
    0
    Ödül Puanları:
    36
    Meslek:
    Muhasebe
    Şehir:
    Balıkesir, Türkiye
    [​IMG]
    [​IMG] 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.
    [​IMG]
    [​IMG] 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.

      [​IMG] 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.
      [​IMG] 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>
      [​IMG] 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\"
      [​IMG] 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.
    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.


      [​IMG] 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.
    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.
    [​IMG]
    Takıldığınız yerler, bilgi almak istediğiniz konularda yardımcı olurum :kalp:
    Saygılarımla,
    [​IMG]
     
    Son düzenleme yönetici tarafından yapıldı: 28 Ekim 2015