تعرفون ياشباب أهمية أنظمة القوالب وفائدتها العظيمة التي تجعل من البرنامج أسرع وتسهل صيانته وتطويره لاحقا بأقل مجهود .. وسيكون لزاما على كل من يريد تعلم PHP أن يجد طريقته الخاصة أو نظامه المفضل للتعامل مع القوالب فهناك من يعتمد على نفسه لكتابة نظام الخاص وفيه ناس يعتمدون على أنظمة قوالب جاهزة في برامجهم ويستفيدون منها مباشرة بمجرد استدعائها
بالنسبة لي فما خليت موقع بحث أو موقع مختص إلا بحثت فيه عن دروس بناء القوالب .. خاصة أنني بدأت عملي على بعض المشاريع الكبيرة نوعا ما .. لكن في النهاية إذا جيت أعدل شي أو أصحح خطأ في السكربت وأفتح الصفحة وأشوف الكود ... يجيني إحباط على طول
من عادتي أفتح ملفات أي سكربت يوصلني وأطلع على كتابته وأسلوب برمجته حتى وقعت بالصدفة على نظام القوالب TemplatePower .. وكان ذلك في سيكربت ( مبوب ) وصدقوني من أول مرة قريت طريقة استدعاء القالب واستخدامه في الصفحة وجدت بأنه واضح جدا ولن يأخذ من وقتك الكثير لتبدأ باستخدامه .. صحيح أن أنظمة القوالب تكاد تكون متشابهة في الاستدعاء وفي إسناد القيم للمتغيرات .. لكن قد يجد المبتدئ صعوبة في بعض الأمور خاصة عند تداخل الحلقات والمصفوفات وطريقة ذلك القالب في التعامل معها .. أما ما يميز TemplatePower فهي السهولة التامة ومن أول مرة قمت بتجربته على منتدى بسيط قمت بكتابته وتفاجأت بالنتيجة
كيف أستخدم TemplatePower ؟
أول شي تسوي لك صفحة HTML تكون هي القالب الخاص بك الذي تريد أن تحصل على نتائج برنامجك من خلاله .. ونبي نطبق على صفحة بسيطة أول شي ثم سنأخذ مثال لصفحة فيها بلوكات على اليمين واليسار وفيها حلقة تكرار تجلب الأخبار في منتصف الصفحة .. والجميل في القالب بأنه رغم التكرار والحلقات في هذه الصفحة إلا أننا لن نضطر لتقسيم الصفوف التي تتكرر في صفحات أخرى .. فبعض القوالب تشترط أن تكون الأشياء التي تتكرر على صفحات خارجية .. والطريقة هذي تكثر عليك الصفحات وبتدوخ معها .
ببساطة .. وكأغلب أنظمة القوالب فإن TemplatePower يتعرف على المتغير الموجود داخل القالب إذا كان بين القوسين التاليين { } فإذا كان لديك متغير في أي جزء من القالب تريد استبداله بقيمته لاحقا فضعه بين القوسين السابقين مثلا : {a} أرقام أو حروف بدون مسافات أو علامات رياضية .
- مثال مبتدئ : لنفرض بأنك أعددت صفحة قالب html وقمت بتسميتها temp.htm وتحتوي على الكود التالي :
كود PHP:
<html dir=rtl>
<head>
<title>تدريب على القوالب</title>
</head>
<body bgcolor= "#FAFCEB" >
<H2>{name} مرحبا بك يا : </H2>
</body>
</html>
قم بعمل صفحة test.php وضع داخلها التالي :
كود PHP:
<?php
//أولا تعمل انكلود لملف الكائن الخاص بالنظام في صفحتك
include_once( "./class.TemplatePower.inc.php" );
//إنشاء كائن جديد أمرر له اسم صفحة القالب المراد استبدال المتغيرات فيها
$tpl = new TemplatePower( "./temp.tpl" );
//بعد إنشاء الكائن لابد من استخدام الدالة التالية وستتولى قراءة
//ملف القالب واستبدال المتغيرات بقيمها
$tpl->prepare();
//تقوم الدالة التالية بإسناد القيمة لمتغير محدد
//البارامتر الأول للدالة هو اسم المتغير كما هو في القالب
//البارامتر الثاني هو القيمة لهذا المتغير
$tpl->assign( "name", "عبد الله" );
//إظهار النتائج النهائية
$tpl->printToScreen();
?>
طيب .. نأتي الآن للمثال المتقدم كأن تكون صفحة برنامجك بها العديد من الاستدعاءات وحلقات التكرار والبلوكات ونافذة للأخبار وأردت شملها في قالب .. فبعد أن تقوم بتصميم قالبك فما عليك إلا أن تضع أسماء المتغيرات في المكان الذي تود أن تظهر فيه قيمة هذه المتغيرات لاحقا وكل متغير بين قوسين كما اتفقنا .. انظر الصورة :
القائمة الرئيسية ثابتة فلن تحتاج لأي متغير .. الأخبار في المنتصف قمنا بتحديد المتغيرات التي ستستخدمها وهي متغير {news_title} لعنوان الخبر ومتغير {news_text} لنص الخبر ، ومتغير {auther} لكاتب الخبر.
القائمة اليسرى سنقوم بعرض اخر عشرة مواقع تم إضافتها للدليل .. وسيكون المتغير {last_site} عبارة عن المصفوفة التي تحمل أسماء تلك المواقع .
الطريقة هي نفس الخطوات السابقة بالضبط .. ولوجود حلقات متعددة أو بلوكات أو أجزاء متعددة تتطلب التكرار في صفحتك فسنستخدم الوسمين التاليين :
كود PHP:
<!-- START BLOCK : block_name -->
<!-- ُEND BLOCK : block_name -->
تعمل هذين الوسمين على تحديد جزء معين من القالب سيتم تكراره لاحقا .. أي نضع الأول في أعلى الكود اللي نبي نكرره والثاني آخر الكود .. مثلا جدول الأخبار سيكون كالتالي :
كود PHP:
<!-- START BLOCK : news -->
<table border="1" width="80%" id="table4" style="border-collapse: collapse">
<tr>
<td bgcolor="#336699" align="center">
<font face="Tahoma" size="2" color="#FFFFFF">{news_title}</font></td>
</tr>
<tr>
<td height="119" align="center"><font face="Tahoma" size="2">{news_text}</font></td>
</tr>
<tr>
<td bgcolor="#FAFCEB" align="center">
<font face="Tahoma" size="2">{auther}</font></td>
</tr>
</table>
<!-- END BLOCK : news -->
لاحظ وجود المتغيرات الخاصة ببلوك الأخبار بين وسمي بداية ونهاية البلوك ,, وهكذا في أي مكان تحتاج فيه للتكرار فكل ماعليك هو أن تضع اسما آخر للبلوك بدلا من news وتضعه بين الوسمين السابقين في ملف القالب ولنعطيه اسم blockat.htm
هذا من ناحية القالب .. بقي الان ملف php :
كود PHP:
<?php
include_once( "./class.TemplatePower.inc.php" );
$tpl = new TemplatePower( "./blockat.htm" );//اسم صفحة القالب
$tpl->prepare();
//لاجديد .. هذي اساسية في كل صفحة استخدم فيها القالب
//نقوم بالاستعلام في القاعدة عن الأخبار
$query =mysql_query("select * from table_name limit 10");
while($news = mysql_fetch_array($query)){
//هنا نستخدم الدالة التالية للتصريح عن بلوك جديد ونمرر للدالة
//اسم البلوك كما هو في القالب
$tpl->newBlock("news");
//الان نمرر للدالة التالية اسم المتغير الموجود في القالب أولا ثم فاصلة ونضع مصفوفة القيم
//التي جلبناها من القاعدة
$tpl->assign("news_title",$news['title']);
$tpl->assign("news_text",$news['text']);
$tpl->assign("auther",$news['writer']);
} //نغلق الحلقات كلها أولا
$tpl->printToScreen(); //ثم نطبع اخر شي
وبالطريقة نفسها مع اخر عشرة مواقع .. ضع وسمي البلوك لتحدد فيها الناحية التي ستتكرر والتي تشتمل على المتغيرات أيضا .. ثم في ملف php قم بإنشاء بلوك جديد مثل :
كود PHP:
$tpl->newBlock("sites");
وأكمل على نفس الخطوات فقط لتجد برنامجك وقد أصبح يعتمد على نظام قوالب مستقل تماما
في نظام TemplatePower وظائف جميلة أيضا يمكن أن تكتشفها بنفسك .. وسيساعدك ايضا دليل الاستخدام العربي في موقعهم على أن تفهم القالب وتستفيد من خصائصه .
تحياتي لكم