في محرك القوالب سمارتي
كثيرا ما أحتاج الى برمجة modifier يقوم بعمل معين أحتاج الى تنفيذه على مستوى القالب، لا على مستوى كود php
كبداية وللتعريف بالـ modifier فهو دالة نقوم بكتابتها بعد المتغير داخل قالب السمارتي، لكي تقوم بتنفذ عملية معينة على قيمة هذا المتغير
مثلا وبفرض وجود متغير باسم $title يحمل قيمة ما هي عبارة عن نص
في حالة رغبتنا بعرض مايحتويه هذا المتغير بعد تحويله للحروف الكبيرة Uppercase فيمكننا استخدام الموديفاير upper كالتالي:
رمز Code:
{$title|upper}
وفي حالة رغبتنا في اظهار تاريخ اليوم عن طريق سمارتي نستخدم الكود التالي:
رمز PHP:
{$smarty.now|date_format:"%Y/%m/%d"}
لاحظ هنا ان الموديفاير او الدالة هي: date_format وقد سبقناها بالعلامة |
وحتى نمرر لها أول باراميتر وهو الطريقة التي نريد أن يظهر بها التاريخ استخدمنا العلامة : وتبعناها بالفورمات المطلوب
الآن نرجع لموضوع درسنا وهو طريقة برمجة موديفاير modifier خاص بنا يقوم بوظيفة معينة
1- قم بانشاء ملف بالاسم: modifier.arabic_date.php
2- احفظ هذا الملف داخل المجلد: smarty/plugins
3- انسخ هذا الكود الى داخل الملف:
رمز PHP:
لاحظ هنا ان اسم الدالة يجب أن يبدأ بـ smarty_modifier_ ويتبعه اسم الدالة الذي يجب أن يكون مطابق للمقطع الثاني من اسم الملف "arabic_date"
الآن وعند الرغبة في اظهار التاريخ باللغة العربية في اي مكان في قوالب سمارتي ، نستخدم الموديفاير الجديد كالتالي:
عند الرغبة في اظهار التاريخ في صورته الطويلة، لا نحتاج لتمرير اي باراميترز
رمز Code:
{$smarty.now|arabic_date}
عند الرغبة في اظهار التاريخ بالصورة القصيرة يجب أن نمرر الباراميتر short الى الدالة
رمز Code:
{$smarty.now|arabic_date:true}
أتمنى ان يكون الدرس قد افادكم
وبانتظار اي استفسارات
منقول من: درس [smarty] درس برمجة الـ modifiers