لنعد الى المقالات... سوف نستغل الآن المفاتيح لتحديد البيئة او البيئات المعنية ثم وضع ادارة «ذكية» للوصلات الى مقالات اخرى تتعلق باللعبة الحالية.
البيئات
تحديد البيئات المعنية بسيط جداً: فهو تطبيق مباشر لحلقة المفاتيح (MOTS). سندخل الحلقة التالية في المقال (مثلاً بين العنوان الفرعي SOUSTITRE# والتاريخ DATE#):
<BOUCLE_platforms(MOTS){id_article}{type=البيئة}>
[(#LOGO_MOT|left)]
</BOUCLE_platforms>
لن نعرض الا شعار البيئة. (بالطبع، بعد انتهاء عملية انشاء الحلقات يجب تحسين الواجهة الرسومية).
في القسم نفسه، بخصوص اللعبة نفسها
اما عرض المقالات الاخرى الموجودة في القسم نفسه، فلا يقل بساطة.
سنبدأ بتعديل نداء الحلقة الاساسية BOUCLE_main بإضافة المرشح {doublons}
لتفادي انشاء وصلة الى المقال المعروض مسبقاً (ليس من المستحسن جمالياً عرض وصلة الى المقال داخل صفحة المقال نفسه):
<BOUCLE_main(ARTICLES){id_article}{doublons}>
من هنا يمكننا استرجاع كل مقالات القسم نفسه (بكل بساطة بواسطة حلقة (ARTICLES){id_rubrique}{doublons}
). الا اننا نريد هنا التمييز بين انواع المقالات ليس فقط لجعل الواجهة اوضح، بل لإنشاء وصلات وعروض مختلفة حسب الحالات ايضاً.
لنبدأ بحلقة نحو الاختبارات الاخرى للعبة. سندرج هذه الحلقة دائماً داخل الحلقة الاساسية BOUCLE_main، مثلاً بعد علامة الحواشي NOTES# مباشرة.
<B_tests><p>إختبارات اخرى للعبة:
<ul>
<BOUCLE_tests(ARTICLES){id_rubrique}{titre_mot=إختبار}{doublons}>
<li><a href="#URL_ARTICLE">#TITRE</a>
</BOUCLE_tests>
</ul>
</B_tests>
(لاختبار عمل هذه الحلقة، ضع عدة مقالات من نوع «إختبار» في القسم نفسه. يمكن ايضاً ربط هذه المقالات ببيئات مختلفة - اختبار لنسخة ويندوز، اختبار لنسخة دريم كاست...).
كما تلاحظ، فالعملية سهلة للغاية:
– نطلب المقالات (ARTICLES)
حسب المعيار {id_rubrique}
(اي المقالات العائدة للقسم نفسه)
– نضيف الشرط التالي: يجب ان يكون اسم احد المفاتيح المرتبطة بالمقال، «إختبار» (لاحظ هنا اهمية احترام الخيار الاصلي لأسماء المفاتيح وعدم تعديلها في ما بعد)
– المعيار {doublons}
يمنع اعادة عرض المقال الاساسي مرة اخرى.
اما النصوص الاختيارية قبل وبعد (اي علامات <ul>...</ul>
) فلا تستخدم الا للواجهة الرسومية.
ملاحظة: تستخدم هذه الحلقة وظيفة تم ادخالها في الاصدار SPIP 1.3: في حلقة (ARTICLES)
يمكن اختيار المقالات حسب اسم مفتاح معين (بواسطة معيار titre_mot
) او حسب مجموعة مفاتيح (بواسطة معيار type_mot
).
الا ان هذه الحلقة غير كافية: بما اننا نريد اختبارات اللعبة نفسها لكن في بيئات مختلفة، يجب تحديد اي بيئة نريد. يكفي اذاً اضافة حلقة مفاتيح (كما هو موضح اعلاه) داخل الحلقة BOUCLE_tests وعرض الشعارات المناسبة. بالمرة، نضيف ايضاً تاريخ نشر المقال.
تصبح البرمجة:
<B_tests><p>إختبارات اللعبة:
<ul>
<BOUCLE_tests(ARTICLES){id_rubrique}{titre_mot=إختبار}>
<li>
<BOUCLE_tests_platforms(MOTS){id_article}{type=البيئة}>
[(#LOGO_MOT)]
</BOUCLE_tests_platforms>
<a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)]
</BOUCLE_tests>
</ul>
</B_tests>
والشيء نفسه للاستعراضات والحلول والنصائح:
<B_previews><p>إستعراضات اللعبة:
<ul>
<BOUCLE_previews(ARTICLES){id_rubrique}{titre_mot=إستعراض}>
<li>
<BOUCLE_previews_platforms(MOTS){id_article}{type=البيئة}>
[(#LOGO_MOT)]
</BOUCLE_previews_platforms>
<a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)]
</BOUCLE_previews>
</ul>
</B_previews>
<B_solutions><p>حلول اللعبة:
<ul>
<BOUCLE_solutions(ARTICLES){id_rubrique}{titre_mot=حلول}>
<li>
<BOUCLE_solutions_platforms(MOTS){id_article}{type=البيئة}>
[(#LOGO_MOT)]
</BOUCLE_solutions_platforms>
<a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)]
</BOUCLE_solutions>
</ul>
</B_solutions>
<B_tips><p>نصائح اللعبة:
<ul>
<BOUCLE_tips(ARTICLES){id_rubrique}{titre_mot=نصائح}>
<li>
<BOUCLE_tips_platforms(MOTS){id_article}{type=البيئة}>
[(#LOGO_MOT)]
</BOUCLE_tips_platforms>
<a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)]
</BOUCLE_tips>
</ul>
</B_tips>
(تعمل هذه الحلقات الثلاث بالطريقة نفسها التي تعمل بها حلقة BOUCLE_tests).
يبقى التعامل مع الأخبار... سنعتمد هنا اسلوباً مختلفاً. فعموماً الاخبار هي معلومات «قصيرة» (اعلان عن تأخير، اشاعات،...) لذلك يُفضل عرضها كلها في صفحة واحدة (قد يكون ذلك غير مستحسن ولكن لنعتبر انه جيد من اجل هذا التدريب).
هنا ندخل الفقرة البرمجية التالية:
<BOUCLE_news(ARTICLES){id_rubrique}{titre_mot=أخبار}{doublons}{par date}{inverse}{0,1}>
<p><a href="news_game.php3?id_rubrique=#ID_RUBRIQUE">أخبار هذه اللعبة</a> - آخر تحديث: [(#DATE|affdate)]
</BOUCLE_news>
اما كيف يمكن الحصول على هذه الفقرة الصغيرة:
– في البداية لم نعد نهتم بالبيئة مما يوفر حلقة
– تسترجع الحلقة BOUCLE_news آخر مقال ({par date}{inverse}{0,1}
) مرتبط بالمفتاح «أخبار». ويكفي مقال واحد للتأكد من وجود صفحة مخصصة للأخبار. وباسترجاع احدث خبر، يعادل عرض تاريخه الاعلان عن «آخر تحديث» لصفحة الاخبار.
بطريقة اكثر اناقة، كان يمكننا انشاء حلقة BOUCLE_news فارغة وادخال وصلة هايبرتكست في «النص الاختياري» العائد لها.
مهم: تدل وصلة هايبرتكست الى صفحة «news_game.php3» مرفقة بالرقم المتسلسل للقسم الحالي. لذلك يجب في ما بعد انشاء الصفحة النموذجية المناسبة لهذا الملف.
الالعاب من الصنف نفسه
اخيراً، نريد عرض الالعاب الداخلة في صنف اللعبة الحالية (مثلاً الالعاب الاخرى في صنف «الرعب»).
سنبدأ باستخدام الاسلوب الذي يتيح «العودة خطوة واحدة» (للانتقال من قسم اللعبة الى قسم صنف اللعبة). ثم سنستعيد الاسلوب المستخدم في الاقسام لعرض الاقسام التي تحتوي مقالات منفصلة على الاخرى (اي الاقسام الممتعلقة مباشرة بالالعاب).
تصبح الفقرة البرمجية:
<BOUCLE_act_sect(RUBRIQUES){id_rubrique}{doublons}>
<BOUCLE_games(RUBRIQUES){meme_parent}{doublons}{par date}{inverse}>
<B_avec_articles>
<h4><a href="#URL_RUBRIQUE">#TITRE</a></h4>
<BOUCLE_with_articles(ARTICLES){id_rubrique}{age < 90}>
</BOUCLE_with_articles>
</BOUCLE_games>
</BOUCLE_act_sect>
تفسير البرمجة:
– تحتوي الحلقة BOUCLE_act_sect (التي تسترجع القسم الحالي) معيار {doublons}
لتفادي اعادة عرض اللعبة الاساسية.
– منطقياً، تحتوي حلقة BOUCLE_games هي الاخرى معيار {doublons}
. تحذير: يؤدي الاكثار من استخدام معيار {doublons}
الى حدوث مشاكل. فإذا قمت بنسخ هذه الحلقات في مكان آخر من الصفحة تأكد من حذف المعيار.
– لا تسترجع حلقة BOUCLE_with_articles الا المقالات الاحدث من ثلاثة اشهر (90 يوماً). والحال اننا لا نريد عرض كل المقالات العائدة للصنف نفسه بل فقط تلك التي تم تحدثها مؤخراً.