رأينا في علامات SPIP انه من الممكن تغيير تصرف العلامات وعرضها بتزويدها بمرشحات (filters).
[ خيار قبل (#علامة|مرشح1|مرشح2|...|مرشحن) خيار بعد ]
تطبق هنا المرشحات 1 و2 ... ون على العلامة #علامة.
مرشحات تصميم الصفحات
لم يعد من المستحسن استخدام مرشحات تصميم الصفحات التالية (majuscules، justifier...). وننصح باستخدام اوراق الانماط المتاسبة بدلاً منها.
majuscules (اي الحروف الكبيرة) يحول النص اللاتيني الى حروف كبيرة. وبالمقارنة مع دالة PHP التي توفر الوظيفة نفسها، يتفوق majuscules بكونه يتعامل مع الحروف ذات الاشارات المصوتة (accented).
justifier (اي المحاذاة) يضبط النص كلياً (يعادل <P align=justify>).
aligner_droite يضبط النص الى اليمين (يعادل <P align=right>).
aligner_gauche يضبط النص الى اليسار (يعادل <P align=left>).
centrer يوسّط النص (يعادل <P align=center>).
مرشحات التاريخ
يتم تطبيق المرشحات التالية على التواريخ ([(#DATE|affdate)] مثلاً).
affdate يعرض التاريخ، مثلاً «13 كانون الثاني 2003».
ويحسن [SPIP 1.8] استخدام هذا المرشح. فيمكن ادخال قيمة تنسيق التاريخ فيه تتوافق مع تنسيقات SPIP ('saison'، الخ) او احد تنسيقات امر date في php (مثلاً «'Y-m-d'»).
على سبيل المثال:
- يعرض
[(#DATE|affdate{'Y-m'})]السنة والشهر بالارقام ويفصل بينها خط. - اما الكتابة
[(#DATE|affdate{'saison'})]، فتعادل تماماُ الكتابة[(#DATE|saison)].
هناك ايضاُ تنوعات من affdate تعطي اختصارات:
affdate_jourcourt يعرض اسم الشهر ورقم اليوم مثلاُ «19 نيسان». واذا كان هذا التاريخ ليس في السنة الحالية، يعرض السنة ايضاُ «3 تشرين الثاني 2004».
affdate_court يعرض اسم الشهر ورقم اليوم مثلاُ «19 نيسان». واذا كان هذا التاريخ ليس في السنة الحالية، يعرض الشهر والسنة فقط بدون اليوم، «تشرين الثاني 2004»
affdate_mois_annee يعرض الشهر والسنة فقط، «نيسان 2005» او «تشرين الثاني 2003».
jour يعرض اليوم (بالارقام).
mois يعرض الشهر (بالارقام).
annee يعرض السنة.
heures يعرض ساعة التاريخ (فالتواريخ التي يوفرها SPIP لا تحتوي التاريخ نفسه وحسب بل التوقيت ايضاً).
minutes يعرض دقائق التاريخ.
secondes يعرض الثواني.
nom_jour يعرض اسم اليوم (الاثنين، الثلاثاء...).
nom_mois يعرض اسم الشهر (كانون الثاني، شباط،...).
saison يعرض الفصل (الربيع، الصيف،...).
يأتي [SPIP 1.8] بالمرشح unique (فريد) الذي يسترجع قيمة العنصر المطبق عليه المرشح فقط اذا كانت هذه المرة الاولى التي يُعثر فيها عليه. ولا يقتصر هذا المرشح على التواريخ ولكن تبرز اهميته حين نريد عرض قائمة مقالات مرتبة بالتاريخ:
ولا تعرض هذه العلامة التاريخ الا عندما يتغير الشهر.
وهذا مثال آخر:
يعرض قائمة تشبه:
2005
آذار
مقال من آذار
مقال آخر من آذار
شباط
مقال من شباط
2004
كانون الاول
مقالنستخدم الكتابة affdate{'Y-m'} لنعرض الشهر في كل سنة. والحال:
- اذا اقتصرنا على
#DATE|nom_mois|unique، لن تظهر اسماء الاشهر الا في السنة الاولى. - اذا كان الترشيح
#DATE|unique|nom_moisسنعرض كل التواريخ. فالعلامة#DATEتسترجع تاريخاً كاملاً يحتوي على الساعة. هناك اذا احتمال كبير ان يكون تاريخا مقالين تم نشرهما في اليوم نفسه، مختلفين.
لذلك نحتفظ فقط بالشهر والسنة من التاريخ قبل ترشيحه بـunique.
يمكننا تمرير معامل اختياري لهذا المرشح للتمييز بين استخدامين مختلفين له. مثلاً، لن يؤثر [(#DATE|affdate_mois_annee|unique{ici})] على [(#DATE|affdate_mois_annee|unique{la})].
مرشحات النصوص
ظهر معظم هذه المرشحات في الاصدار [SPIP 1.4].
liens_ouvrants (اي وصلة فاتحة)، يحول وصلات SPIP التي تدل الى مواقع خارجية الى وصلات من النوع المنبثق (popup) الذي يفتح نافذة جديدة. انه يعادل target=blank في HTML. ملاحظة: يعتبر مطورو SPIP ان هذه الوظيفة غير لائقة لأن الزوار يعرفون تماماً اذا كانوا يريدون فتح نافذة جديدة ام لا. الا ان هذه الوظيفة تفرض عليهم ذلك، ولكن الطلب عليها كان قوياً جداً فرضخنا!
supprimer_numero (اي حذف الرقم) يستخدم لحذف رقم عنوان المقال في حال وجوده واذا اردنا فرز المقالات حسب رقم المقال ({par num titre}) ولكن دون عرض هذا الرقم (لأنه يستخدم لترتيب المقالات وحسب). اما تنسيق الارقام في العناوين فهو «س س. عنوان» حيث «س س» هو الرقم (يمكن ان يكون بأي حجم).
PtoBR يحول وظيفة فتح فقرة جديدة الى عودة بسيطة الى اول السطر مما يساهم في «شد» تصميم الصفحة.
taille_en_octets (اي الحجم بالبايت) يتيح تحويل عدد بالبايت (25678906) الى عدد اوضح (24.4 ميغابايت).
supprimer_tags (اي حذف العلامات) وهو حذف صريح ومباشر لكل الـ<...>.
textebrut (اي النص الخام) يقترب من مرشح supprimer_tags الا ان عمله اكثر دقة اذ يحول الفقرات وعلامات <br> الى قفز سطر والمسافات الجامدة ( ) الى مسافات عادية. ويستخدم مثلاً لإنشاء وصف META من علامة #DESCRIPTIF هكذا:
[<meta name=’description’ content=’(#DESCRIPTIF|textebrut)’>]
يقطع couper النص بعد عدد محدد من الحروف. ويحاول عدم قطع الكلمات ويلغي تنسيق النص. اذا كان النص طويلاً جداً، يتم اضافة «(...)» في آخره. الحجم الافتراضي هو 50 حرفاً ولكن يمكن تحديد قيمة اخرى بإدخال معامل على المرشح. مثلاً: [(#TEXTE|couper{80})].
مرشحات الاختبار
ادخل [SPIP 1.6] المرشح |sinon (والا) الذي يحدد ما يجب عرضه اذا كان العنصر الذي يطبق عليه الترشيح فارغاُ: هكذا يعرض [(#TEXTE|sinon{"مادة غائبة"})] المادة، واذا لم يكن هناك اية مادة، يعرض «مادة غائبة».
وادخل [SPIP 1.8] المرشح |?{sioui,sinon} (اذا كان، اذا لم يكن) الذي يعتبر نسخة محسنة من المرشح |sinon. ويأخذ هذا المرشح معاملين:
- sioui هي القيمد التي تظهر اذا كان العنصر غير فارغ.
- sinon اختياري. وهي القيمة التي تظهر اطا كان العنصر الذي يطبق عليه الترشيح فارغاُ.
[(#TEXTE|?{#TEXTE,"مادة غائبة"})]يشبه المثال الذي اوردناه للمرشح|sinon.
ويأتي [SPIP 1.8] بمجموعة من المرشحات تستخدم لمقارنة قيم بين بعضها:
- يتيح |=={قيمة} و|!={قيمة} التأكد من معادلة او عدم معادلة بين العنصر المطبق عليه المرشح والقيمة المذكورة. مثلاً:
<li [(#TITRE|=={اولى}) id="اولى">]#TITRE</li> - ويقارن |>{valeur}، |>={valeur}، |<{valeur} و|<={valeur} بين العنصر المطبق عليه المرشح (الذي يجب ان يكون رقماً) والقيمة الرقمية المذكورة. مثلاً:
[(#TOTAL_BOUCLE) [(#TOTAL_BOUCLE|>{1}|?{'articles','article'})] في هذا القسم].
ملاحظة: بشكل عام، يمكن استخدام كل معاملات المقارنة في php لتلعب دور المرشحات في [SPIP 1.8].
مرشحات الرموز
fichier (اي الملف). اذا اضيف الى رمز ما (logo)، يسترجع هذا المرشح مباشرة اسم ملف الرمز.
||مرشحات اخرى. على عكس الاصدارات السابقة يتيح [SPIP 1.4] تطبيق مرشحات شخصية على الرموز:
- اذا كان «المرشح» الاول ليس «مرشح» محاذاة، يعتبر SPIP انه عنوان URL وينشئ وصلة من الرمز الى هذا العنوان.
- اذا كان «المرشح» الاول مرشح محاذاة، يعتبر SPIP ان «المرشح» الثاني هو عنوان URL.
- المرشحات التالية هي مرحات حقيقية في المعنى الاعتيادي (بما فيها مرشحات شخصية يتم اعلانها في ملف mes_fonctions.php3.
- لتطبيق اي مرشح دون ادخال عنوان URL، يجب وضع خطين عموديين قبله. مثلاً:
<?php $logo = ‘[(#LOGO_RUBRIQUE||texte_script)]’; ?>يتيح استرجاع الرمز ووضعه في المتغير$logo، لمعالجته لاحقاً (انظر ادناه معنى مرشح|texte_script).
يأني [SPIP 1.8] بالمرشحين hauteur (الارتفاع) وlargeur (العرض) اللذين يسترجعان ابعاد العنصر المطبق عليه المرشح اذا كان صورة.
لا يأتي هذان المرشحان بكبير فائدة اذا تم تطبيقهما مباشرة على رمز مستند كون HAUTEUR# و LARGEUR# متوافران اصلاُ للمستندات. في المقابل، يمكننا استخدامهما بعد مرشح reduire_image لمعرفة الابعاد الحقيقية للصورة التي تم تحجبمها.
بشكب عام، يمكن تطبيقهما على اي علامة (او مرشح) تسترجع علامة HTML الخاصة بالصور <img ...>.
يقدم SPIP
1.7.1 المرشح reduire_image الذي يفرض حداً اقصى لعرض الرموز.
ويطبق هذا المرشح على رموز المقالات بالطريقة التالية:
في هذا المثال يظهر رمز المقال مضبوطاً الى اليمين وبحجم اقصى يبلغ 130 نقطة.
ملاحظة: اذا كان خيار «انشاء المصغرات» محدداً في قسم اعداد الموقع، ستكون هذه الرموز المصغرة ملفات صور قائمة بنفسها وناتجة آلياً عن الخادم (في افضل الحالات، اذا كانت مكتبة GD2 مثبتة على الخادم) وبالتنسيقات التي يدعمها الخادم (مع GD2 تكون تنسيقات JPG وPNG). والا فيتم عرض نسخة كاملة من الصورة ولكن بحجم يتم تحديده مباشرة في HTML (مع الجودة الرديئة التي تنتج عنه).
المرشحات التقنية
ظهرت هذه المرشحات في الاصدار [SPIP 1.4].
entites_html (اي كيان HTML) يحول نص عادي الى كيانات HTML يمكن ادخالها في الاستمارات، مثلاً:
[<textarea>(#DESCRIPTIF|entites_html)</textarea>]
texte_script يحول اي حقل الى سلسلة يمكن استخدامها في PHP او جافاسكريبت بكل امان، مثلاً: <?php $x = ‘[(#TEXTE|texte_script)]’; ?>. تنبيه: يجب استخدام ' وليس ". ففي الحالة الثانية، اذا كان النص يحتوي على رمز $، يمكن للنتيجة ان تكون كارثية (عرض ناقص، عرض مختلف، خطأ PHP،...).
attribut_html يجعل من سلسلة قابلة للاستخدام كصفة HTML. مثلاً، اذا اردنا اضافة نص حوم الى وصلة عادية تدل الى مقال، نستخدم:
<a href=”#URL_ARTICLE” [ title = “(#DESCRIPTIF|supprimer_tags|attribut_html)” ]>#TITRE</a>
ادخل [SPIP 1.6] مرشح |sinon («والا») الذي يحدد ما يجب عرضه اذا كان العنصر المطبق عليه الترشيح فارغاً: هكذا [(#TEXTE|sinon{"لا يوجد نص"})] يعرض النص، وفي حال عدم وجود اي نص، فيعرض عبارة «لا يوجد نص».
اضافة وظائف شخصية
ان مرشحات SPIP هي في النهاية دالات PHP بمتغيّر واحد. فيمكنك استخدام دالات PHP العادية كما يمكنك انشاء دالاتك الخاصة، على النحو التالي:
<?php
function my_filter($texte){
$texte = (اوامر PHP) ...;
return $texte;
}
?>لتجنب تعديل ملفات SPIP (التي قد تُفقد خلال عملية تحديث)، يمكنك وضع دالاتك الخاصة في ملف mes_fonctions.php3: فإذا وجد SPIP هذا الملف يضمه آلياً.
فعلى سبيل المثال يقوم المرشح hijri الذي كتبه جورج وفيل (لا يوزع مع SPIP) بعرض التاريخ الهجري.
فالمرشح [(#DATE|hijri{Arabic})]
يعطي «الاحد 8 جمادي الاولى 1424»
اما المرشح [(#DATE|hijri{Latin})]
فيعطي «Sunday 8 Jumada al-oula 1424».
يمكن تحميل هذا المرشح من SPIP_contrib ويكفي اضافته الى ملف mes_fonctions.php3 لاستخدامه.
مرشحات ترافقها قيم
منذ [SPIP 1.5]، يمكن تمرير قيم في المرشحات، هكذا:
ويجب انشاء المرشح هكذا في mes_fonctions.php3:
يمكن ايضاً مناداة اي دالة php او الاعتماد على دالات محددة في SPIP او في mes_fonctions.php3 بشرط ان تحترم ترتيب القيم arg1, arg2... (يجب على النص المطلوب معالجته ان يكون القيمة الاولى). على سبيل المثال، لحذف النقاط في آخر نص ما، يمكن استخدام [(#TEXTE|rtrim{'.?!'})].
منذ [SPIP 1.8]، بمكن لقيم المرشحات ان تكون علامات (دون اوامر اختيارية ولا مرشحات). مثلاً: [(#TOTAL_BOUCLE|=={#COMPTEUR_BOUCLE}|?{'Fin.',''})].

SPIP 1.9.2