السلام عليكم ورحمة الله وبركاته
في محرك القوالب سمارتي
كثيرا ما أحتاج الى برمجة modifier يقوم بعمل معين أحتاج الى تنفيذه على مستوى القالب، لا على مستوى كود php
كبداية وللتعريف بالـ modifier فهو دالة نقوم بكتابتها بعد المتغير داخل قالب السمارتي، لكي تقوم بتنفذ عملية معينة على قيمة هذا المتغير
مثلا وبفرض وجود متغير باسم $title يحمل قيمة ما هي عبارة عن نص
في حالة رغبتنا بعرض مايحتويه هذا المتغير بعد تحويله للحروف الكبيرة Uppercase فيمكننا استخدام الموديفاير upper كالتالي:
وفي حالة رغبتنا في اظهار تاريخ اليوم عن طريق سمارتي نستخدم الكود التالي:
كود PHP:
{$smarty.now|date_format:"%Y/%m/%d"}
لاحظ هنا ان الموديفاير او الدالة هي: date_format وقد سبقناها بالعلامة |
وحتى نمرر لها أول باراميتر وهو الطريقة التي نريد أن يظهر بها التاريخ استخدمنا العلامة : وتبعناها بالفورمات المطلوب
الآن نرجع لموضوع درسنا وهو طريقة برمجة موديفاير modifier خاص بنا يقوم بوظيفة معينة
1- قم بانشاء ملف بالاسم: modifier.arabic_date.php
2- احفظ هذا الملف داخل المجلد: smarty/plugins
3- انسخ هذا الكود الى داخل الملف:
كود PHP:
<?php
function smarty_modifier_arabic_date($dateline, $short=false)
{
if($short)
{
$date = date("l j/n/Y م", $dateline);
$date = str_replace(array("Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"), array("السبت","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة"), $date);
}
else
{
$date = date("l j/n/Yم الساعة h:i:s A", $dateline);
$date = str_replace(array("Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"), array("السبت","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة"), $date);
$date = str_replace(array("AM","PM"), array("صباحاً","مساءاً"), $date);
}
return $date;
}
?>
لاحظ هنا ان اسم الدالة يجب أن يبدأ بـ smarty_modifier_ ويتبعه اسم الدالة الذي يجب أن يكون مطابق للمقطع الثاني من اسم الملف "arabic_date"
الآن وعند الرغبة في اظهار التاريخ باللغة العربية في اي مكان في قوالب سمارتي ، نستخدم الموديفاير الجديد كالتالي:
عند الرغبة في اظهار التاريخ في صورته الطويلة، لا نحتاج لتمرير اي باراميترز
كود:
{$smarty.now|arabic_date}
عند الرغبة في اظهار التاريخ بالصورة القصيرة يجب أن نمرر الباراميتر short الى الدالة
كود:
{$smarty.now|arabic_date:true}
أتمنى ان يكون الدرس قد افادكم
وبانتظار اي استفسارات