Smarty Manual

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Smarty Manual as PDF for free.

More details

  • Words: 4,081
  • Pages: 37
Smarty [Template Engine]

Saygılarımla Onur YERLIKAYA,

Smarty:Template Engine

Onur Yerlikaya 10 Ocak 2006 ~ Salı http://witkey.org

Merhaba arkadaşlar, Smarty ile aklınıza takılan problemleri ileri düzeyde her ne kadar olmasa da çözebilmeniz için bu manuel kitabı hazırladım , Umarım size faydalı olur.Burada anlatırken öğrendim çoğu şeyi Türkiyede kimse istemese de bildikleri şeyleri paylaşmayı ben seviyorum. Bu kitabın benden habersiz kopyalanmaması ve yayınlanmaması için : Creative Commons korunmaktadır.

Attribution-NonCommercial-NoDerivs

2.5

lisansı

ile

bu

kitap

Belki bu lisansı gören arkadaşlar yanlış anlayacak ama üzgünüm , Emeğe saygı duymayan bir çok insan var. Zend * Certificated PHP Developer ve Mysql developer olmayı istiyorum herşeyin hayırlısı ve her istediğinizin olması dileğiyle.. Bu kitabı okuyan herkese teşekkürlerimi sunarım. Saygılarımla, Onur YERLIKAYA

* Zend is a trademark of Zend Technologies Ltd.

İçindekiler İçindekiler I. Başlangıç 1. Smarty nedir ? 2. Kurulum •

Gereksinimleri



Temel Kurulum



Extend Kurulum

II. Designerlar için Smarty 3. Söz dizimi •

Yorumlar



Değişkenler



Fonksiyonlar



Özellikler



Çift tırnak içine veri eklenmesi



Matematik



Smarty Tagları

4. Değişkenler •

PHP değişkenleri



Config değişkenleri



{$smarty} değişkenleri

5. Değişken Düzenleyiciler •

capitalize



cat



count_characters

İçindekiler



count_paragraphs



count_sentences



count_words



date_format



default



escape



indent



lower



nl2br



regex_replace



replace



spacify



string_format



strip



strip_tags



truncate



upper



wordwrap

6. Nitelenenleri birleştirmek 7. Yapı Fonksiyonları •

{capture}



{config_load}



{foreach},{foreachelse}



{if},{elseif},{else}

İçindekiler •

{include}



{include_php}



{insert}



{ldelim},{rdelim}



{literal}



{php}



{section},{sectionelse}



{strip}

8. Custom Fonksiyonları •

{assign}



{counter}



{cycle}



{debug}



{fetch}



{html_checkboxes}



{html_image}



{html_options}



{html_radios}



{html_select_date}



{html_select_time}



{html_table}



{mailto}



{math}



{textformat}

İçindekiler 9. Konfigürasyon dosyaları 10. Hata Konsolu III. Programcılar için Smarty 11. Değişmeyenler •

SMARTY_DIR



SMARTY_CORE_DIR

12. Smarty Sınıf değişkenleri •

$template_dir



$compile_dir



$config_dir



$plugins_dir



$debugging



$debug_tpl



$debugging_ctrl



$autoload_filters



$compile_check



$force_compile



$caching



$cache_dir



$cache_lifetime



$cache_handler_func



$cache_modified_check



$config_overwrite

İçindekiler



$config_booleanize



$config_read_hidden



$config_fix_newlines



$default_template_handler_func



$php_handling



$security



$secure_dir



$security_settings



$trusted_dir



$left_delimiter



$right_delimiter



$compiler_class



$request_vars_order



$request_use_auto_globals



$error_reporting



$compile_id



$use_sub_dirs



$default_modifiers



$default_resource_type

İçindekiler

13. Smarty Sınıf Metodları •

append()



assign()



clear_all_assign()



clear_all_cache()



clear_assign()



clear_cache()



clear_compiled_tpl()



clear_config()



config_load()



display()



fetch()



get_config_vars()



get_registered_object()



get_template_vars()



is_cached()



load_filter()

Smarty Manual Smarty Nedir ? Smarty PHP için bir Template motorudur. İşlemleri iki kısma ayırır Design & Program. Belirli taglar arasında yazılır , bunu kendinizde belirleyebilirsiniz standart olarak “{” “}” kullanılır. Smarty'le yapabilecekleri onu kullanarak daha iyi anlayacağınızı düşünüyorum. Gereksinimleri ? PHP 4.0.6 veya daha yüksek sürümleri. Temel Kurulum Öncelikle http://smarty.php.net adresine giderek download sayfasındaki şu andaki son sürümü olan |[ Smarty 2.6.11 14 Aralık 2005 ] | indirmeniz.

Extract Here diyerek paketimizi açıyoruz, ardından “Smarty-2.6.11” adında bir dizin oluşuyor ve “libs” adlı dizinini biz kullanacağız burada Smarty'e ait sınıf dosyaları mevcut olmaktadır. Bizde Templatemiz için bu sınıfları kullanacağız.

Libs dizini ve içeriği ;

Şimdi Bir Dizin oluşturalım “Smarty” adında ve bu dizin altına bir “index.php” atalım bu dizinin altına bir “gorunum” dizini acalım gorunum dizini altına da “template – compile – config – cache” adında birkaç dizin oluşturalım.Template dizini altına “index.tpl” adında bir dosya oluşturalım ve config dizini altına da “smarty.conf” adında dosyalarımızı oluşturalım.

Smarty Manual

Sol taraftaki panelden de görüldüğü gibi require ile Smarty Sınıf dosyamızı alarak Smarty'i başlattık.

Eğer server bize aitse ve serverımıza kurmak istiyorsak Smarty'i öncelikle php.iniyi açarak

ardından kaydedıyoruz ve Apache'yi (( Eğer

include_path = “Smartydizini” yazıyoruz

başka bir web sunucusunu kullanıyorsanız onu )) restartlıyoruz.

Smarty Manual

Ben libs klasörünü C:\Libs dizini altına yükledim ve ardından php dosyamda şu işlemi yaptım.Ve dizinimize göre çağırdım ve herhangi bir problemle karşılaşmadım.Her zaman yazılan ebooklarda genelde doğrular anlatılır yanlışlara pek değinilmez.

Warning: main(Smarty.class.php): failed to open stream: No such file or directory in c:\appserv\www\smarty\index.php on line 5 Fatal error: main(): Failed opening required 'Smarty.class.php' (include_path='Smarty dizini') in c:\appserv\www\smarty\index.php on line 5

Eğer bu yukarıda gördüğünüz hatayı alıyorsanız yüklediğiniz dizin adını doğru vermemiş veya işlemleri yanlış yapmışsınız demektir. Tekrar bütün işlemlerinizi kontrol ederek tekrar deneyin

.

Define deyimini kullanarak SMARTY_DIR 'a atayacağınız dizini belirleyebilirsiniz. Şimdi dosya izinlerine bir bakalım ? Cache ve Compile adlı dizinlerimizin CHMOD ayarı 770 olmalıdır. Merhaba Dünya yazdıralım isterseniz ekrana öncelikle eğer programla uğraşan kişi ilk başta Merhaba dünya yazdırmazsa sanki bütün hevesi gidiyor ama Merhaba dünya hani doğan bir bebek gibi 0(sıfır)'dan öğrenmek bazı şeyleri daha da güzel oluyor. İndex.tpl dosyamızı açalım o zaman ve içine ;

{$yazi}

yazalım ve kaydedip kapatalım.

Smarty Manual Şimdi index.php adlı dosyamızı açalım ((Smarty dizinimizde bulunan ~ Libs değil Smarty))

yukarıdaki kodları girelim ; $smarty->template_dir >> Template dosyalarımızı sakladığımız dizin adı. $smarty->compile_dir >> Smarty'in temayı çalıştıracağı dizin adı. $smarty->cache_dir >> Smarty'in cache yapacağı dizin adı. $smarty->config_dir >> sakladığımız dizinin adı.

Smarty

için

oluşturduğumuz

konfigürasyon

dosyalarını

$smarty->assign('tplDosyasinaGonderilecekDegisken','gelenVeri'); $smarty->display('index.tpl'); göstereceğini belirler.

Bu

verilerin

islemlerin

hangi

TPL

dosyası

üzerinde

TPL dosyamızda :: {$yazi} bu yazi degiskenini nereden aldı ? Neden “{”“}” tagları arasına yazdık ? Gibi kafada oluşan sorunlarımızı yanıtlayalım.. Smarty { } kod tagları arasına yazılır. PHP'nin tagları arasına yazılması ile eş değerdir. $yazi degiskenini oluşturduğumuz php dosyasında assign fonksiyonunu kullanarak aldık.

Şimdi de Extend Kurulumu nasıl yapacağız ona gözatalım ?..

Smarty Manual

Smarty.php adını verdiğim dosya

Smarty(); $this->template_dir = 'gorunum/template'; $this->compile_dir = 'gorunum/compile'; $this->config_dir

= 'gorunum/config';

$this->cache_dir

= 'gorunum/cache';

$this->caching = true; $this->assign('gidicek_data', 'gelen_data'); } } ?>

Smarty Manual

Söz dizimi ?

>> Yorum Satırı {* Smarty yorumları tpl dosyasında buraya yazılır *}

>> Değişkenler {$foo}

<-- basit bir değişkeni gösterir.

{$foo[4]}

<-- 0 indexli dizide 5.ci elementi gösterir.

{$foo.bar}

<-- dizideki keyi bar'a eşit olan ile aynı işlemi yapar : PHP $foo['bar']

{$foo.$bar}

<-- dizideki keyi değişkene eşit olan ile aynı işlemi yapar:PHP $foo[$bar]

{$foo->bar}

<-- bar nesnesinin özelliklerini gösterir.

{$foo->bar()} <-- display the return value of object method "bar" {#foo#}

<-- konfigürasyon dosyasında foo şeklinde ayarlanmış bilgiyi gösterir.

{$smarty.config.foo} <-- {#foo#} ile aynı işlemi yapar. {$foo[bar]}

<-- sadece loop döngüsü içerisinde geçerlidir.bakınız {section}

Diğer kombinasyonlar {$foo.bar.baz} {$foo.$bar.$baz} {$foo[4].baz} {$foo[4].$baz} {$foo.bar.baz[4]} {$foo->bar($baz,2,$bar)} <-- geçiş parametreleri {"foo"}

<-- sabit değer

Smarty Manual

>> Fonksiyonlar {config_load file="smarty.conf"} {include file="header.tpl"} {if $ozel_isim} Hoşgeldin, {$ad}! {else} Hoşgeldin, {$ad}! {/if} {include file="footer.tpl"}

>> Özellikler {include file="header.tpl"} {include file=$gerekliDosya} {include file=#gerekliDosya#} {html_select_date display_days=yes}

Smarty Manual >>Çift tırnak içine veri eklenmesi ; Yazılış Örnekleri; {func var="test $foo test"} {func var="test $foo_bar test"} {func var="test $foo[0] test"}

<-- $foo degiskenini gosterir. <-- $foo_bar degiskenini gosterir. <-- $foo dizisindeki ilk elemanı gösterir.

{func var="test $foo[bar] test"} <-- $foo dizisindeki key'i bar olan elemanı gösterir. {func var="test $foo.bar test"}

<-- $foo'yu gösterir. $foo.bar'ı değil.

{func var="test `$foo.bar` test"} <-- $foo.bar 'ı gösterir. {func var="test `$foo.bar` test"|escape} <-- Tırnak işaretsiz düzenlenir. Pratik ; {include file="subdir/$tpl_name.tpl"} <-- $tpl_name etiketi ile birlikte tpl dosyasını alır. {cycle values="one,two,`$smarty.config.myval`"} <-- ` karakteri olmalı

>> Matematik İşlemleri {$foo+1} {$foo*$bar} {* komplexli örnekler :)) *} {$foo->bar-$bar[1]*$baz->foo->bar()-3*7} {if ($foo+$bar.test%$baz*134232+10+$b+10)} {$foo|truncate:"`$fooTruncCount/$barTruncFactor-1`"} {assign var="foo" value="`$foo+$bar`"}

Smarty Manual

>> Smarty Tagları $smarty->left_delimiter = ''; yukarıda verilen örnekteki gibi de "" kısımlarını kendı zevkınıze veya ıstegınıze gore değiştirebilirsiniz ama standartlar her zaman iyidir . Benim önerim sadece "{" "}" tagları arasında yazmak olacaktır.

>> Değişkenler Smarty bir çok değişken farklılıklarını barındırır.Hemen örneklere geçelim. {$ad} {$dizi[row].Telefon}

>> Associative diziler Dizileri kullanırken smarty ile birlikte . (Dot) sembolunu kullanırız Örnek ; index.php

$smarty->assign("veri",array('kim'=>array ('ad'=>'Onur','soyad'=>'YERLIKAYA')));

index.tpl

{$veri.kim.ad} {* Ekran cıktısı Onur olur *} {$veri.kim.soyad} {* Ekran çıktısı YERLIKAYA *}

Smarty Manual

>> Objeler Objelerde $veri->email şeklinde kullanılır.

>> Konfigürasyon dosyalarının kullanımı Konfigürasyon dosyası nedir ? Nasıl kullanırız ? Konfigürasyon dosyaları işinizi kolaylaştırmaya yarar.Config->dir şeklinde belirlediğiniz dizin içerisine yollanır.Kullanımı daha ıyı anlayabılmek için bir örnek yazıyorum. Smarty.conf dosyamız; ArkaPlan = "#E7E7E7" border = "1" Baslik = "Smarty Manual" tabloArkaPlan ="#bbbbbb" satirArkaPlan = "#ccccccc" Index.tpl dosyamız;

{config_load file="smarty.conf"} {#Baslik#}
Örnek


>> {$smarty}.değişkenleri Şimdi de smarty in sahip olduğu özelliklere bir gözatalım. {$smarty.get.degisken} : bu fonksiyon $_GET ile aynı işlemi yapmaktadır. Form bilgilerini get metoduyla alır ve ekrana yazdırır. {$smarty.post.degisken}: bu fonksiyon $_POST bilgilerini post metoduyla alır ve ekrana yazdırır.

ile

aynı

işlemi

yapmaktadır.Form

Smarty Manual {$smarty.cookies.cerezadi} : bu fonksiyon da $_COOKIE metodu ile aynı işlemi yapar. Cerezadi şeklinde belirtilen cookiyeyi ekrana yazdırır. {$smarty.server.PHP_SELF} : bu fonksiyonda $_SERVER fonksiyonu ile aynı işlemi yapar ve gelen veriyi ekrana yazdırır. {$smarty.env.PATH} : bu fonksiyonda get_env ile aynı işlemi yapar gelen veriyi ekrana yazdırır. {$smarty.session.sessionadi} : $_SESSION ile aynı işlemi yapar gelen veriyi ekrana yazdırır. {$smarty.now} = Şu andaki tarihi gösterir. {$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"} : Bu da tarih ve saat formatını düzenlemenizi saglar. Fakat date_format: tan sonra gelen %Y-%m-%d %H:%M:%S lerin önünde ve de sonundaki tırnak işaretlerini koymayı unutmayın. {$smarty.const._HOSGELDIN} : _HOSGELDIN seklınde ekrana yazdırır. Kullanım amacı genelde dil dosyaları olan projeler icindir. Define deyimi ile bu tanımlamalar değiştirildiği için,genelde de bu amaçla kullanılır. {$smarty.capture} : Bu fonksiyon {capture} {/capture} ile birlikte anlatılacaktır. {$smarty.config.ArkaPlan} : {#ArkaPlan#} ile aynı işlemi yapar. {$smarty.section} {$smarty.foreach} : Bu fonksiyonlar {foreach} {/foreach} fonksiyonları ile birlikte anlatılacaktır.

{section} {/section} ve

{$smarty.template} : Hangi template dosyası üzerinde çalıştığımızı ekrana yazdırır. {$smarty.version} : Smarty'in hangi versiyonunda çalıştığımızı ekrana yazdırır. Şimdi vakit kaybetmeden diğer konuya geçelim (:

>> Değişken düzenleyiciler Bu değişkenler nedir ? Bu gelen veriyi düzenlememizi sağlar. Bütün karakterleri küçültme büyültme vb. Gibi.. Capitalize >> Index.php $smarty->assign('ornek', 'next x-men film, x3, delayed.'); Index.tpl Normal:
{$ornek}
False:
{$ornek|capitalize}
True :
{$ornek|capitalize:true}


Smarty Manual

count_characters >> Index.php $smarty->assign('ornek', 'Ben Istanbulda Oturuyorum.'); Index.tpl {$ornek|count_characters} {$ornek|count_characters:true}

Default olarak boşlukları saymaz ama boşlukları saymasını da istersek true olarak kullanıyoruz. cat >> Index.php $smarty->assign('ornek', 'Bugün günlerden'); Index.tpl {$ornek|cat:" Pazar."}

Cat fonksiyonu da aldıgımız veriye ek yapmamızı sağlar. Bu örneğin ekran görüntüsü Bugün günlerden Pazar. Olacaktır. count_paragraps >> Index.php $smarty->assign('ornek', 'Bugün günlerden Pazar. Ve arkadaşlarla beraber cafeye gittik.Ondan sonra ayrıldık herkes evine gitti.'); Index.tpl {$ornek|count_paragraphs"} Bu fonksiyon da paragrafları sayar ama bence bu fonksiyona işinizi bırakmayın derım :) problemler yaşayabılırsınız. Bu örneğin ekran çıktısı 2 olacaktır. count_sentences>> Index.php $smarty->assign('ornek', 'Bugün günlerden Pazar. Ve arkadaşlarla beraber cafeye gittik.Ondan sonra ayrıldık herkes evine gitti.'); Index.tpl {$ornek|count_sentences"} Bu fonksiyonu da önerdiğimi söyleyemem açıkcası, Bu örneğin ekran çıktısı 3 olacaktır.

Smarty Manual count_words >> Index.php $smarty->assign('ornek', 'Bugün günlerden Pazar. Ve arkadaşlarla beraber cafeye gittik.Ondan sonra ayrıldık herkes evine gitti.'); Index.tpl {$ornek|count_words"} Bu örneğin ekran çıktısı 14 olacaktır.

date_format >>

{$smarty.now|date_format} Ekran Görüntüsü : Jan 7, 2006 gibi olacaktır. {$smarty.now|date_format}
{$smarty.now|date_format:"%A, %B %e, %Y"}
{$smarty.now|date_format:"%H:%M:%S"}
Ekran Görüntüsü : Jan 7, 2006 Saturday, January 7, 2006 11:08:20 şeklinde olacaktır.

Ifadelerin onune % işaretı konulmak zorundadır. Default >> {$ornek|default:"Eğer veri boşsa varsayılan değer ben oldum"} Escape >> index.php'yi hiç değiştirmeden index.tpl'ye kodları yazarak inceleyiniz.

Smarty Manual

{$ornek}
{$ornek|escape}
{$ornek|escape:"html"}

{* & " ' < > karakterlerini ayıklar*}


{$ornek|escape:"htmlall"} {* Bütün html girdilerini ayıklar *}
{$ornek|escape:"url"}
{$ornek|escape:"quotes"}
{$ornek|escape:"hexentity"}


indent >> Index.php $smarty->assign('ornek', 'Bugün günlerden Pazar. Ve arkadaşlarla beraber cafeye gittik.Ondan sonra ayrıldık herkes evine gitti.'); Index.tpl {$ornek|indent}
{$ornek|indent:10}
{$ornek|indent:1:"\t"}
Sonuç : Bugün günlerden Pazar. Ve arkadaşlarla beraber cafeye gittik. Ondan sonra ayrıldık herkes evine gitti.
Bugün günlerden Pazar. Ve arkadaşlarla beraber cafeye gittik. Ondan sonra ayrıldık herkes evine gitti.
Bugün günlerden Pazar. Ve arkadaşlarla beraber cafeye gittik. Ondan sonra ayrıldık herkes evine gitti.


Smarty Manual lower >> Bu fonksiyon gelen yazıyı tamamen küçültmemize yarar. {$ornek|lower} nl2br >> Bu fonksiyonda verilen \n "linebreak" ları
ye çevirecektir. Index.php $smarty->assign('ornek', 'Bugün günlerden Pazar. \n Ve arkadaşlarla beraber cafeye gittik.\n Ondan sonra ayrıldık herkes evine gitti.'); Index.tpl {$ornek|nl2br"}

regex_replace>> {$ornek|regex_replace:"/[\n\r]/":""} replace>> replace smarty ile daha da rahat kullanılabılmesı saglanmış. {$ornek|replace:"kaldırılacak_veri","yerine_gecicek veri"} spacify>> {$ornek|spacify:"~"} Spacify karakterlerin arasına verdiğimiz karakteri ekler.Default olarak boşluk işlemi yapar. string_format >>

$smarty->assign('sayi', 23.5787446); {$sayi|string_format:"%.2f"}
{$sayi|string_format:"%d"}


strip_tags >> {$ornek|strip_tags} default olarak true değerini döndürür. {$ornek|strip_tags:false}

Smarty Manual truncate>> Index.php $smarty->assign('ornek', 'Bugün günlerden Pazar. \n Ve arkadaşlarla beraber cafeye gittik.\n Ondan sonra ayrıldık herkes evine gitti.'); Index.tpl {$ornek|truncate} {$ornek|truncate:25} {$ornek|truncate:25:">>":true} Ekran Çıktısı : Bugün günlerden Pazar. Ve arkadaşlarla beraber cafeye gittik. Ondan... Bugün günlerden Pazar.... Bugün günlerden Pazar. >>

Upper >> {$ornek|upper} bütün gelen veriyi büyülterek ekrana yazdırır.

Wordwrap>>

Index.php $smarty->assign('ornek', 'Bugün günlerden Pazar. \n Ve arkadaşlarla beraber cafeye gittik.'); Index.tpl {$ornek|wordwrap:20}
{$ornek|wordwrap:30:"
\n"}

Karışık örnek , Ortaya da ateşli bir salata :)

{$ornek} {$ornek|upper|spacify} {$ornek|lower|spacify|truncate} {$ornek|lower|truncate:25|spacify} {$ornek|lower|spacify|truncate:25:". . ."}

Smarty Manual capture>> {* Eğer içerik boş ise başka işlemler yapsın :) *} {capture name=banner} {include file="banner.tpl"} {/capture} {if $smarty.capture.banner ne ""} {$smarty.capture.banner} {/if}

Bu işlemde capture ile başta adlandırdığımız veri dosyasında eğer hiçbir şey yoksa ki bunu ne ile gösterdik bunun geniş açıklamasını ileriki kısımlarda yapacağız. Başka bir içerik gösteriyoruz. config_load>> {config_load file="smarty.conf" section="Panel"} {#sayfaBasligi#}
Onur YERLIKAYA


Smarty.conf gibi oluşturduğumuz konfigürasyon dosyalarının ıcerıgını config_load fonxionu ile daha rahat gösterebiliriz. Section kısmı ile de oluşturduğumuz panelde görüntülenmesini sağlarız. Birer kahve alalım isterseniz :)) eğlenceli geldi :)

Sıkıldığınızı duyar gibiyim sizi bilmem ama bana baya

Smarty Manual Foreach>> Sıra geldik döngüsel işlere bunlar bizim bir çok işimizi kolaylaştırmaktadır :) Şimdi öncelikle bu konu için bir tablo oluşturalım.

Özellik

Tür

Gerekli

Varsayılan Açıklama

from

array

Evet

-

Diziyi döndürür

item

string

Evet

-

Varsayılan elementi belirler

key

string

Hayır

-

Varsayılan anahtarı belirler.

name

string

Hayır

-

Foreach döngüsünün adını belirler

Hemen ardına ufak bir örneğimizi daha ekleyelim : Index.php ----------------$smarty->assign('dongu',array(array("telefon"=>"000 00","email"=>"[email protected]","satir"=>"1"),array("telefon"=>"111 11","email"=>"[email protected]","satir"=>"2"))); Index.tpl ----------------{foreach name=otomasyon item=veri from=$dongu} {* yukarıki kısımda gelen verileri "veri" degiskenine atadık *} {foreach key=anahtar item=element from=$veri} {$anahtar} : {$element}
{/foreach} {/foreach} Ekran Çıktısı: ----------------telefon : 000 00 00 email : [email protected] satir : 1 telefon : 111 11 11 email : [email protected] satir : 2 Include>> {include file="header.tpl" title="Ana Menu" table_bgcolor="#c0c0c0"} {* HTML kodlarınızı buraya yazın :))

*}

{include file="footer.tpl" logo="http://php.net/logo.gif"}

Yukarıdaki örnekteki gibi include deyimini kullanırız :)

00 11

Smarty Manual Include_php>> PHP dosyalarını çağırmak istediğimizde bu fonksiyonu kullanırız, Şu an kullanım yeri olarak en uygun yeri dil dosyalarını almakta olsa gerek { Tabiki bu örnek olarak söyledim :) } {include_php file="smarty.php"} Insert>> Bu fonksiyonuysa php de hazırladığımız fonksiyonların içerisine veri göndermek için kullanıyoruz. Index.php -------------------Function insert_yazdir($data) { return echo $data; } Index.tpl -------------------{insert name=yazdir data="Buraya da herhangi bir veri yazalım"} Çıktı : -------------------Array ( [name] => yazdir [data] => Buraya da herhangi bir veri yazalım ) Gördüğünüz gibi veriyi fonksiyonun içerisine gonderdik :) sadece verimizi göndermek için de yapacağımız şey cok basit :) $data["data"] gibi belirtmek olabilir. Mantıksal İşlemler ->> { Önemli !! }

Niteleyen

Değişiklik Örnek

Anlamı

PHP

==

eq

$a eq $b

eşittir

==

!=

ne, neq

$a neq $b

Eşit değil

!=

>

gt

$a gt $b

çok

>

<

lt

$a lt $b

az

<

>=

gte, ge

$a ge $b

Eşit veya eşitten büyük >=

<=

lte, le

$a le $b

Eşit veya eşitten küçük <=

===

-

$a === 0

benzerlik

===

!

not

not $a

değil

!

%

mod

$a mod $b

Mod

%

is [not] div by

-

$a is not div by 4

bölünebilir

$a % $b == 0

is [not] even

-

$a is not even

Çift

$a % 2 == 0

is [not] even by

-

$a is not even by $b

a'nın b'ye bölümü çift ise

($a / $b) % 2 == 0

is [not] odd

-

$a is not odd

tek

$a % 2 != 0

is [not] odd by

-

$a is not odd by $b

a'nın b'ye bölümü çift olmayan

($a / $b) % 2 != 0

Smarty Manual Ufak ve basit bir örnek vermek gerekirse : Gelen verimizin "Haber" olduğunu varsayalım. {if $data eq "Haber"} Gelen veri Haber. {else} Gelen veri Haber değil. {/if} Eğer $data değişkenine atadığımız değer "Haber" verisinden başka bir veri olursa Gelen veririn haber olup olmadığını belirtiyor (: {ldelim}{rdelim} Hadi şimdi smarty taglarını kullanıyoruz ama biz ben temalarımda { ve } karakterlerini kullanmayı seven bir insanım diyorsanız bunun için de çözüm basit { karakteri yerine ldelim } karakteri yerine ise rdelim yazmanız yeterli oluyor :) {literal}>> Bu fonksiyon sayesınde smarty'in düzenlemesini istemediğiniz yerleri düzenlememesini sağlayabilirsiniz. {literal} <script language="javascript"> {/literal} {php}{/php}>> Bu taglar arasında php kodlarınızı normal bir şekilde de yazabilirsiniz :) {php} echo "Smarty ile Merhaba Dünya"; {/php} Şimdi de geldik section kısmına :)) {section}{/section}>>

Index.php $smarty->assign('ornekler',array("1","Iki","3","Dort","5")); Index.tpl {section name=sayi loop=$ornekler} {$ornekler[sayi]} {/section} Ekran Çıktısı 1 Iki 3 Dort 5

Smarty Manual {strip}{/strip}>> Bu yazdıgınız kodların ekranda tek satır görüntülenebilmesini sağlar.

Custom Fonksiyonlar {assign}>> {assign name="herhangi_bir_veri" value="Bu da veri için atadığımız içerik} {count}>> {counter name=sayac} {counter} {counter name=sayac2 skip=5} {counter} {counter} {counter}

100 1 1 2 3 4

Direction ile de yönü belirlenebilir aşağıdan yukarı yukarıdan aşağı gibi. {cycle}>> {section name=satir loop=$ornekler} {/section}
{$ornekler[satir]}
{debug}>> Oluşan hataları verir. {fetch}>> {fetch file="http://www.google.com.tr" assign="ornek"} {if $ornek ne ""} {$ornek} {/if}

Baya bir tembellik yaptım biraz kolları sıvayalım :))

Smarty Manual html_checkboxes>>

Özellik

Tür

Gerekli

Varsayılan

Açıklama

name

string

Hayır

checkbox

values

array

Evet,options özelliğini kullandığımızda gereksiz

-

Checkbox butonları ıcın olusan dizi

output

array

Evet,options özelliğini kullandığımızda gereksiz

-

Checkbox butonları ıcın olusan dizi ( Çıktı)

selected

string/array

Hayır

empty

Seçilen checkbox elemetleri

options

associative array

Evet, çıktı da ve etiket değerlerinde kullanmamız gereksiz

-

Çıkış ve etiketleri birleştiren dizi

separator

string

Hayır

empty

labels

boolean

Hayır

true

Checkbox'ın adı

Checkboxtan gelen verileri ayırmak ıcın kullandığımız ayraç Çıkışa

Related Documents

Smarty Manual
November 2019 9
Smarty Template
November 2019 9
Smarty 2.6.11
October 2019 20
Smarty 2.6.14 Documents
October 2019 7
Smarty 2.6.5 Docs
June 2020 12
Smarty 2.6.14 Docs
April 2020 8