الجميع يعرف ان الهدف من نظام القوالب هو فصل المحتوى عن التصميم ..
المحتوى : هو الاكواد البرمجية
التصميم : نتيجة الاكواد البرمجية او ما سيظهر للزائر
و نظام القوالب فيه نوع من الصعوبة ..
قمت بالبحث في الانترنت وجدت احد الاكواد التي تقوم بهذا العمل ( فصل المحتوى عن التصميم ) بشكل مبسط ..
وقمت بتحليل هذا الكود ووجدت انه يفي بالغرض ..
وقمت ببعض التعديل على هذا الكود و تنسيقه و جعله بابسط شكل ممكن ..
الكود عبارة عن دالة اسمها template ..
كود PHP:
function template($file)
{
كما ترون في السطر الاول والثاني تعريف للدالة وكما في تعريف اي دالة هناك اسم الدالة ثم يتبعها المتغير االذي هو في دالتنا مسمى بـ $file الذي يمثل مسار ملف التصميم المراد دمجه مع المحتوى ..
كود PHP:
$open=fopen("$file","r");
السطر الثالث عبارة عن مجموعة من الاوامر في متغير اسمه $open ومن اسمه معناه انه للفتح .. يقوم المتغير بفتح ملف التصميم وتجهيزه للقراءة كما تلاحظون وجود حرف r في البارمتر الثاني للدالة fopen بينما البارمتر الاول هو عبارة عن مسار ملف التصميم الذي هو المتغير $file ..
الان تم تجهيز ملف التصميم للقراءة .. اذا الخطوة التالية طبعا هي القراءة !
كود PHP:
$template=fread($open,filesize("$file"));
عن طريق الدالة fread نقرأ الملف كاملا وتلاحظون ان البارمتر الاول هو المتغير $open الذي يقوم بتجهيز الملف للقراءة والبارمتر الثاني هو عبارة عن دالة filesize التي تقوم بقياس حجم ملف التصميم وعدد حروفه .. وتلاحظون ان الدالة filesize البارمتر الوحيد لها هو مسار ملف التصميم ..
الان تم قراءة الملف وتخزينه في متغير بإسم $template ..
نغلق الملف بعد الانتهاء من قراءته عن طريق الدالة fclose والبارمتر الوحيد لها هو المتغير $open الذي قام بتجهيز الملف للقراءة سابقا ..
كود PHP:
$template=str_replace('"','\"',$template);
في هذه الخطوة نقوم باستبدال " بـ \" وذلك ليمكن استخدامها كمتغير وللحفاظ على تنسيق ملف التصميم فلا يتداخل مع اكواد البرمجة ..
كود PHP:
return($template);
}
في السطرين الاخيرين نقوم بارجاع القيمة للمتغير واغلاق الدالة ..
طبعا الان نحن لدينا دالة .. ولكل دالة طريقة استخدام معينة ..
طبعا لابد من وجود الدالة في نفس الملف وذلك بطريقتين :
اما وضع الدالة كما هي .. او استيراد الملف .. اذا افترضنا ان الدالة في ملف اسمه template.php فنقوم بــ :
كود PHP:
include("template.php");
اما بالنسبة للطريقة فهي كالتالي ..
كود PHP:
$template=template("template.html");
في السطر الاول نقوم بتطبيق الدالة template على الملف template.html ..
كود PHP:
eval("\$template=\"$template\";");
في السطر الثاني نقوم باستخدام الدالة eval التي تقوم بتحويل المتغيرات داخل ملف التصميم الى المتغيرات الموجودة في الكود البرمجي ..
في السطر الاخير نقوم بطباعة المحتوى النهائي ..
سأضع لكم الدالة كاملة ..
كود PHP:
function template($file)
{
$open=fopen("$file","r");
$template=fread($open,filesize("$file"));
fclose($open);
$template=str_replace('"','\"',$template);
return($template);
}
وطريقة الاستخدام كاملة ..
كود PHP:
$template=template("template.html");
eval("\$template=\"$template\";");
echo $template;
انتهيت الان من شرح الدالة ..
بقي مثال بسيط ..
لدينا ملف التصميم اسمه template.html وهذا محتواه :
كود HTML:
<style type="text/css">
#content {
width:75%;
padding:5px;
font-family:verdana;
color:#000000;
text-align:left;
background:#f5f5f5;
border-width:1px;
border-style:dashed;
border-color:#cccccc;
}
</style>
<center><div id="content">
<h1>$title1</h1>
<p>$text1</p>
<h1>$title2</h1>
<p>$text2</p>
</div></center>
لدينا في هذا الملف ( الغير قياسي ) أربعة متغيرات هي :
$title1 : العنوان الاول
$text1 : النص الاول
$title2 : العنوان الثاني
$text2 : النص الثاني
وتلاحظون اننا لم نقم بكتابة المتغيرات بين قوسين { } أو قوسين ( ) بل كتبنا المتغير كما هو ..
ولدينا ملف البرمجة واسمه template.php وهذا محتواه :
كود PHP:
<?php
function template($file)
{
$open=fopen("$file","r");
$template=fread($open,filesize("$file"));
fclose($open);
$template=str_replace('"','\"',$template);
return($template);
}
$title1="We believe you're talented!";
$text1="<b>Social Freelancing</b><br><br>
We believe all people are talented and skilled. That is why we are launching <a target=\"_blank\" href=\"http://www.a3mali.com/en\">a3mali</a>. The first social freelance site in the Arab World, all for free.<br><br>
<b>Give Help, Get Paid</b><br><br>
Come meet other people who are looking for the skills you've got. Help them with their projects and get paid for it.<br><br>
<b>Get Help from the professionals</b><br><br>
If you're looking for help this is the right place for you to find talent. Just post your projects and relax while the best people bid to win.";
$title2="Who are we?";
$text2="We are three friends who think we can help empower people in the Arab World by giving them an outlet for their skills. Our service, <a target=\"_blank\" href=\"http://www.a3mali.com/en\">a3mali</a> is based in Dubai and we soon will be rolling out the first beta.";
$template=template("template.html");
eval("\$template=\"$template\";");
echo $template;
?>
وبهذا نكون قد انتهينا تماما من الدرس ..
اعتذر على الاطالة ..
واتمنى ان تستفيدو من هذا الدرس .