نظام قوالب للمستوى المتوسط

يتسائل الكثير من مبرمجى لغة PHP عن كيفية عمل نظام قوالب و قد رأيت من أهمية الموضوع أن أكتب هذا المقال مع أن لكتابة نظام للقوالب هناك العديد من الطرق و لكن هذه الطريقة مبسطة و تفى بغرض الشرح لمفهوم عمل نظام القوالب.



تعالوا فى نظرة مبدئية نتعرف على المتغيرات التى سوف نستخدمها فى ملف main.html و الـPHP:

فى هذا المثال سوف نستخدم < % main %>كمتغير فى ملفات القوالب الـHTML ، و القائمة الآتية بها المتغيرات فى صفحة index.php:

[code]

$main
و هو متغير يحتوى على النص المراد عرضه فى ملف القالب

$content بالطبع متغير لنص آخر تريد عرضه فى ملف القالب

$fd

$filename متغير به إسم ملف القالب

$template متغير يتم فيه و عن طريقه إستبدال المتغيرات بالرموز التى سوف نستخدمها فى ملفات القوالب

$action

[/code]

أما الدوال و الأوامر التى سوف نستخدمها ففى القائمة التالية:

[code]

function template();

function home();

fopen

fclose

global

stripslashes

eregi_replace

echo

switch

default:

break:

[/code]

هذا النوع من البرمجة (القوالب) سوف يقوم بإخراج قيمة متغير ما – $main فى المثال – إلى صفحة HTML.

< % main %>

و الآن إفتح ملف HTML جديد وليكن إسمه template.html و ضع داخله الشفرة التالية:

[code]

< code>
&lt;html&gt;&lt;body&gt;
&lt;table cellpadding="0" spacepadding="0" border="0"&gt;
&lt;tr&gt;&lt;td valign=top align=left&gt;
&lt;% main %&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;
code>

[/code]

إفتح ملف index.php و ضع فيه الشفرة التالية:

[code]

< ?

function template($content) {

global $main;

$filename = "template.html"; if(!$fd = fopen($filename, "r")) {

$error = 1;

}

else {

$template = fread ($fd, filesize ($filename));

fclose ($fd);

$template = stripslashes($template);

$template = eregi_replace("< % main %>", "$main", $template);

$template = eregi_replace("< % content %>", "$content", $template);

echo "$template";

} } function home() {

global $main;

include ("test.php");

template("$data");

}

switch($action) {

default: // default switch

home();

break;

}

?>

[/code]

و الآن حان دور الملف الذى يحتوى على قيمة المتغير $main و ليكن إسمه test.php :

[code]

< ?

$main .= 'Testing templates take it easy with Zajil';

?>

[/code]

Post to Twitter Post to Delicious Post to Facebook

Leave a Reply

Seek in here
Translator
Archive