zor soru: smarty değişkenine php fonksiyonunu tpl içinde uygulamak ?

0
Onaylı Üye
Üye
Katılım
12 Haziran 2006
Mesajlar
1,511
Tepki puanı
0
Konum
Kayseri
Smarty değişkenine ( {$degisken} gibi ) tpl içinde php de yazılmış bir fonksyionu uygulayıp yine tpl içine yazılmış gibi nasıl çıktı alabiliriz ?

get_template_vars {php} şeklinde kaçışlarda çalışmıyor. buyrun bakalım :)
 
0
Onaylı Üye
Üye
Katılım
5 Haziran 2006
Mesajlar
1,894
Tepki puanı
7
hodo.html

HTML:
<!-- BEGIN: sayfa -->
<a href='{SAYFA.URL}'>{SAYFA.TITLE}</a>
<!-- END: sayfa -->



PHP:
$tema=hohoho("hodo.html");

$url="http://www.phpogreniyorum.info";
function title($q) {
 $kaynak=file_get_contents($q);
 $title='#<title>(.*?)</title>#si';
 preg_match($title,$kaynak,$tit);
 $tit=$tit[1];
 return strip_tags($tit);
}

 $array=(
     'URL'=>$url,
     'TITLE'=>title($url)
 );
 
 $tema->assign("SAYFA",$array); //Depolanan veriyi sayfa "{SAYFA.*}" yapısına atıyoruz.

 $tema->parse("sayfa"); //sayfa templatemizi basıyoruz <!-- BEGIN: sayfa
 $tema->out("sayfa"); //sayfa templatemizin çıktısını alıyoruz.
 
0
Onaylı Üye
Üye
Katılım
12 Haziran 2006
Mesajlar
1,511
Tepki puanı
0
Konum
Kayseri
pek güzel,

pekii smarty plugin olarak modify function ekleyebiliyor muyuz libs içinden ?
 
0
Onaylı Üye
Üye
Katılım
12 Haziran 2006
Mesajlar
1,511
Tepki puanı
0
Konum
Kayseri
heehee

kendi sorumun cevabını verince hakkaten iyi hissediyorum.

an itibariyle smarty nin neden php.net üstünden subdomaine sahip olduğunu idrak ettim. pear içindeki flexy falan iyidr diyenler kusura bakmasınlar. smarty plug in yapısı ve php fonksiyonu register mantığıyla bir harika.

şöyle,

Kod:
    // gerekli includelar yapıldı varsayalım
    // root adres adından belli.

    $sys =& new Smarty;
    $sys->template_dir = ROOT_ADRES.'codes/templates';
    $sys->compile_dir  = ROOT_ADRES.'libs/smarty/templates_c';
    $sys->config_dir   = ROOT_ADRES.'libs/smarty/config';
    $sys->cache_dir    = ROOT_ADRES.'libs/smarty/cache';
    $sys->caching      = false;
    
    $sys->register_function('linklestir', 'r_linklestir');
    
    function r_linklestir($ozellik, &$smarty)
    {
       return eregi_replace(" ","-",$ozellik['link']);
    }

buradaki r_linklestir php fonksiyonunun tpl içinde smarty değişkene etki etme şekli şöyle oluyor.

Kod:
   {linklestir link=$skey}

Linkimiz ekrana boşlukları - yapılmış halde yazılıyor. bir harika bu özellik. plug in özelliği, kendimizinde plugin yazabilmemiz falan ayrıca süper olmuş.

Asp de upload compenent lazım abi diyenler bunları biliyormu acep merak etmemek elde değil :)
 
Geri
Üst