smarty ile pagination

php ile çalışmalarımı sürdürürken smarty template engine'i kullanarak mvc yapısını tam olarak olmasa da kullanıyorum ve işlerimi oldukça kolaylaştırıyor.

smarty gerek programcı ile tasarımcının aynı anda, ortalığı karıştırmadan çalışmasına olanak sağladığı gibi güçlü cache ve compile yapısı ile sayfamızı da oldukça hızlandırıyor.

Smarty'nin pagination class ve pluginlerini sistemini kullanıyorum ve bununla iligili yeterli bir Türkçe kaynak olmadığı için de paylaşmak istedim.

Smarty'i sistemimize kurma işlemini burada anlatmaya lüzum görmüyorum. Nasıl olsa smarty pagination arayan birisi o aşamayı çoktan geçtiğini düşünüyorum.

İlk olarak SmartyPaginate.class.php isimli pagination class dosyasını /smarty/libs klasörümüzün içerisine atıyoruz.

Daha sonra ise function.paginate_first.php, function.paginate_last.php, function.paginate_middle.php, function.paginate_next.php,function.paginate_prev.php,function.paging.php isimli dosyalarımızı ise /smarty/libs/plugins isimli klasörümüzün içerisine atıyoruz.

Not:  Dosyaları buradan indirebilirsiniz.

Daha sonra ise index.php'de (ya da sizin .php dosyanızda) class dosyamızı çağırıyoruz.
require($AnaDizin."/smarty/libs/SmartyPaginate.class.php");

index. php dosyamızda aşağıdaki işlemleri sırası ile gerçekleştiriyoruz:

// pagination class'ına connect oluşturuyoruz
SmartyPaginate::connect();

// her sayfa için listelenecek adeti  belirliyoruz
SmartyPaginate::setLimit(10);

//url'mizi belirliyoruz ve set'liyoruz
$Url = $AnaUrl."index.php"
SmartyPaginate::setUrl($Url);

// url'de görünecek olan değişkeninin ismini değiştiriyoruz. ben "start" kullandım. dileyen istediği gibi değiştirebilir
SmartyPaginate::setUrlVar("start");

//daha önceden oluşturmuş olduğumuz $Data isimli dizimizi
//dizinin toplam boyutunu
//index.tpl dosyamıza assign ediyoruz

$smarty->assign('Data',$Data);
$smarty->assign('Total',count($Data));

index.tpl dosyasının içeriği
Dizimizi section içerisinde yazdırıyoruz.
{section name=i loop=$Data}
{assign var=D value=$Datai]}
{$D.Title} - {$D.Desc}
{/section}

//sonra ise smarty pagination plugin dosyalarımızı aşağıdaki şekilde çağırıyoruz ve paging işlemini tamamlıyoruz
//{if $Total > 10} bu işlem ile php'de hesapladımız $Data isimli dizinin boyutu eğer 10'dan büyük ise paging işlemini
//gerçekleştir diyoruz
//aksi taktirde 10 adetten az listeler için de paging oluşturacak

{if $Total > 10}
{paginate_prev text="Önceki"} {paginate_middle page_limit="10" format="page"} {paginate_next text="Sonraki"}
{/if}

İşte bu kadar :)
İyi çalışmalar..

No Comment

No comments yet

Leave a reply