Kodlar aşağıda.
NOT: Bu kodlar sunucuda çalıştı fakat benim makinamda çalışmadı.PHP Kodu:<?
define('SMARTY_DIR', 'libs/');
require(SMARTY_DIR . 'Smarty.class.php');
$smarty = new Smarty;
$smarty->template_dir = 'gorunum/template';
$smarty->compile_dir = 'gorunum/compile';
$smarty->cache_dir = 'gorunum/cache';
$smarty->config_dir = 'gorunum/config';
$smarty->assign ("yazi", "Merhaba Dünya");
$smarty->display('index.tpl');
?>
sorun yok gibi gözüküyor.
Konuyu açma sebebim, eskiler ve onca yazılandan sonra şu an sadece Smarty kullanıyorum ve herkese tavsiye ederim.
Konu biraz sapmış ama en azından başlangıçta sorduğum şeye göre bu mesaj kendi adıma bir nokta oluyor.
Zaten dediğim gibi kodlarda sorun yok, çünkü bu kodlar sunucuda çalışıyor. Sorun kodların kendi bilgisayarımda çalışmamasından kaynaklanıyor.
Heralde ilgili dizinlere yazdırma izninin verilip verilmemesinden kaynaklanan bir sorun bu.
- ilgili dizinlerin chmod değerlerini 770 ve 777 yaparak denedim olmadı.
- Başlat > cmd > cacls d:\dizinyolu /G everyone:f dedim yine olmadı. (ASP'de access dosyalarına böyle yazdırma izni veriliyordu)
Teşekkürler arkadaşlar.
Smarty'nin son sürümünü indirdim ve demo dizinindeki index.php dosyasını aşağıdaki gibi düzenledim. Çalıştı...
<?php
require 'libs/Smarty.class.php';
$smarty = new Smarty;
$smarty->assign ("yazi", "Merhaba Dünya");
$smarty->display('yaziyaz.tpl');
?>
phpBB'deki gibi direk;
$template .....vs.vs,...=>
'L_ORNEK' => $ornek,
ve tema dosyasında {L_ORNEK}
şeklinde kullanmak istiyorum. kendi kodladığım bir sayfada bu şekilde template kullanabilmek için neler yapmam gerekir? ilginize teşekkürler
Ben PEAR kullanıyorum sizlerede tavsiye ederim arkadaşlar. Smarty yi de biliyorum ama pear gerçekten bir kodçu ve bir tasarımcının anlayabileceği en basit template sistemi Tasarım yapılacak .tpl dosyasına sadece degisken adı yazılıyor php dosyası içinde gerçekleşen çıktılar bu değişkene atanıyor. ve istenilen yerde gösteriliyor. bazı arkadaşlar smarty nin içinde if else yazılacaksa ben neden bunu kullanayım demişler birazcıkta olsalar bu konuda haklılar galiba bazı kişilerde while döngüsünü bulamadıkları için smarty de biraz şaşkınlar ama pear da bunlar php dosyası içinden gerçekleştirilip bir degiskene atanıyor tasarımcıya sadece dinamik olacak yere {} içerisinde bir degisken adı yazmak kalıyor. Gerçekten süper.... Tavsiye ederim...
Kurulumu 1-2 sene önce olsaydı gerçekten zor derdim ama şu anda xampp uygulaması içinde hazır kurulu halde gelior localhostta kolayca deneyebilirsiniz. Hosting firmalarının birçoğuda artık pear desteği vermekte yoksa bile kurdurabilrisniz. Hepinize kolay gelsin..
Merhaba,
Templating konusunda kisisel goruslerimi yansitayim dedim.
Yaklasik 3 ay onceye kadar templating sisteminin bir sacmalik olduguna yemin edebilirdim. Hatta bu konuda php mailing listte de baya bir tarismamiz oldu. Daha sonra gelistirdigimiz CMS icin "Vallahi sende haklisin amma velakin musterilerimizin web tasarimcilari php den anlamiyor bu yuzden template sistemi kurmaniz sarttir, hatta ve hatta mumkun ise template dosyalariniz Visual Designer araclari ilede bir fiil uyumlu olsun" seklinde bir istek geldi. Eh madem oyle deyip arastirmaya koyuldum. Ulastigim netice
"Zeten Php nin kendisi HTML icin Template dilidir, ayrica bir template dili icad etmek araya ek bir katmak koyup sistemi dahda yavaslatmaktan baska bir ise yaramaz. Eger tasarimcilariniz php den anlamiyorsa, anlayacak hale getirin veya anlayanlari bulun" seklinde idi.
Diger bir cok programci ise Template motorlarinin bellir bir yukun ustundeki sitelerde bas belasindan baska bir sey olmadigi, olusturduklari yukun sagladiklari faydaya deymiyecegini dahasi henuz gercek anlamda kod ile html ayirmanin mumkun olmadigi yonunde idi.
Akabinde diger bir cok template motoruna baktim ve vardigim sonuc su oldu.
Template sistemi sadece bir tek amaca hizmet edecek, baka hicbir ek veya dahili algoritmayla ugrasmayacak ve bunu en ucuz php fonksiyonlari ile yapacak.
Mevcut sistem sirketin know-how u oldugu icin tamamini aciklama imkanim yok, ancak fikir vermesi acisindan temel fonksiyonu ve isleme modelini aciklamayi dusunuyorum.
Biz uygun cache metodlari ile, bu sistemi, toplam sayfa olusturma zamaninin %5 ila %10 arasinda bu sistemi kullaniyoruz.
index.tpl
index.phpPHP Kodu:<table border='0' cellpadding='0' cellspacing='1' width='100%'>
<tr>
<td>{|adi|}</td>
<td><input type='text' name='adi' value='{|adi_|}' />
</tr>
<tr>
<td>{|soyadi|}</td>
<td><input type='text' name='soyadi' value='{|soyadi_|}' />
</tr>
<tr>
<td colspan='2' align='center'><input type='submit' name='submit' value='{|ekle|}' />
</tr>
</table>
getGBlock fonksiyonuPHP Kodu:$strCikti =
getGBlock(array('tpl'=>'index.tpl','v'=>array(
'adi'=>'ADI',
'soyadi'=>'SOYADI',
'ekle'=>'EKLE',
'adi_'=>$adi,
'soyadi_'=>$soyadi)));
print $strCikti;
Bunlarin cache edilmesi ve diger opsiyonlar artik size kalmis. Bu model ile php ve html i birbirinden ayirmaniz mumkun. Bizim uygulamak seklimiz oldukca farkli olsada temel olarak yaptigimiz bunun aynisi. Oldukca memnunuz. Sirketteki html tasarimcilari alisma surecini attattiktan sonra oldukca begendiler.PHP Kodu:function getGBlock($arrOpt)
{
if(is_file("templates/".$arrOpt['tpl'])
{
$strTemplate = get_file_contents("templates/".$arrOpt['tpl']);
$intSize = sizeof($arrOpt['v']);
$arrKeys = arrayKeys($arrOpt['v']);
for($i=0;$i < $intSize;$i++)
{
$arrFind[$i] = "{|".$arrKeys[$i]."|}";
$arrRepl[$i] = $arrOpt['v'][$arrKeys[$i]];
}
return str_replace($arrFind,$arrRepl,$strTemplate);
}
else
{
return implode(" ",$arrOpt['v']);
}
}
Dilerim faydasi dokunur...
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks