حلقة ARTICLES (المقالات)

تتم برمجة حلقة المقالات بوضع ARTICLES (لا تنسى S الجمع) بين هلالين:

<BOUCLEn(ARTICLES){critères...}>

فالعناصر الموجودة في هذه الحلقة هي مقالات.

معايير اختيار المقالات

نستخدم احد المعايير (criteria) التالية لنحدد كيفية اختيار المقالات في الحلقة.

 {branche} (منذ SPIP 1.4 ) (الفرع) يسترجع مجموع المقالات الموجودة في القسم واقسامه الفرعية. (انه نوع من الامتداد لمعيار {id_secteur}. الا انه، على عكس {id_secteur=2}، لا يمكن تحديد فرع مباشرة بواسطة {branche=2}: فمن الناحية التقنية يجب على القسم المطلوب ان يكون في السياق النشط. ينصح باستخدام هذا المعيار بحذر فإذا كان الموقع جيد البنية، ليس من المتوقع ان تحتاج اليه الا في حالات خاصة جداً).

 المعياران {date} (او {date=...} او {date==...}) يتيحان استرجاع مقال بالاعتماد على التاريخ الذي تم تمريره في عنوان url (منذ SP<font color="yellow">IP 1.7.2).

 {id_article} (الرقم التسلسلي للمقال). يسترجع المقال الذي يحمل الرقم التسلسلي id_article. وبما ان هذا الرقم فريد، لا يسترجع هذا المعيار الا مقال واحد او صفر مقالات.

 {id_auteur} (الرقم التسلسلي للمؤلف). يسترجع المقالات التي كتبها المؤلف رقم id_auteur (وهو مفيد لعرض قائمة بالمقالات التي كتبها هذا المؤلف).

 {id_groupe=ص ص ص ص} (منذ SPIP 1.4 ) (الرقم التسلسلي لمجموعة المفاتيح) يتيح اختيار المقالات المرتبطة بمجموعة مفاتيح، وهو يعادل {type_mot} ولكن بما اننا ادخلنا رقماً تسلسلياً تكون الصيغة الاملائية للامر «انظف». [ملاحظة: في وضع SPIP الحالي، لا يمكن اضافة هذا المعيار الى المعيار السابق {type_mot=ش ش ش ش}].

 {id_mot} (الرقم التسلسلي للمفتاح). يسترجع المقالات المرتبطة بالمفتاح الذي يحمل هذا الرقم (وهو مفيد للحصول على المقالات المتعلقة بموضوع معين مثلاً).

 {id_rubrique} (الرقم التسلسلي للقسم). يسترجع المقالات الموجودة في القسم الذي يحمل الرقم التسلسلي id_rubrique.

 {id_secteur} (الرقم التسلسلي للقسم الاساسي). يسترجع المقالات الموجودة في القسم الاساسي الذي يحمل هذا الرقم التسلسلي (ونذكر ان الاقسام الاساسية هي الاقسام الموجودة في اصل الموقع او اعلى التنظيم الهرمي وليس داخل اقسام اخرى).

 {lang} (منذ SP<font color="yellow">IP 1.7.1) يسترجع مقالات اللغة المطلوبة في عنوان الصفحة.

 {origine_traduction} (مصدر الترجمة) يسترجع المقال المرجع الذي ترجم المقال الحالي عنه.

-  {pagination} Lorsqu’une boucle renvoie plusieurs dizaines d’articles (ou, pour une pétition, plusieurs milliers de signatures), il n’est pas souhaitable, voire impossible, de tout afficher sur une seule page.

|?{

-  {pagination} Lorsqu’une boucle renvoie plusieurs dizaines d’articles (ou, pour une pétition, plusieurs milliers de signatures), il n’est pas souhaitable, voire impossible, de tout afficher sur une seule page.

,

Pour mettre en place le système de pagination, il faut ajouter à votre boucle le critère {pagination} comme ici, par exemple :

<B_page>
    <nav role="navigation" class="pagination">#PAGINATION</nav>
    <ul>
<BOUCLE_page(ARTICLES) {par date} {pagination}>
    <li>#TITRE</li>
</BOUCLE_page>
    </ul>
</B_page>

Vous pouvez voir l’utilisation de la balise #PAGINATION nécessaire dans le mécanisme de pagination. Si le site comporte 90 articles publiés, cette boucle affichera la liste des dix plus anciens articles, surplombée de liens conduisant vers la page qui affiche les dix suivants, les dix d’après, etc. Ces liens sont numérotés comme suit :

Le numéro à partir duquel les résultats sont affichés est passé dans l’url via un paramètre {debut_page=x} portant le même nom (ici, « page ») que la boucle concernée. (Ce paramètre est exploitable dans une autre boucle via le critère classique {debut_page,10}.)

A noter : le nombre total de liens affichés est limité ; des points de suspension permettent, le cas échéant, d’aller directement à la toute fin de la liste, ou de revenir au tout-début.

Changer le pas de la {pagination}

Le nombre standard de 10 éléments par page peut être modifié par un paramètre supplémentaire dans le critère.

Ainsi

<BOUCLE_page (ARTICLES) {pagination 5}>
#TITRE <br />
</BOUCLE_page>

retournera les titres de cinq articles à partir de debut_page.

Le paramètre en question peut lui-même être composé comme on le souhaite à partir d’autres balises, notamment #ENV{xx}, ce qui permet de faire un affichage à la demande très complet.

Changer le nom de l’argument d’url

Un 3eme argument permet de changer le nom de l’argument d’url figurant dans les liens de pagination et qui sert à indiquer quelle page de quelle pagination est affichée.

Le nom de cette variable d’url est constituée par ’debut’ suivi du la valeur du 3eme argument s’il est présent, ou du nom de la boucle sinon :
-  debut_page dans l’exemple précédent ;
-  mais avec {pagination 5, _des_exemples} ce serait debut_des_exemples.

})

 {recherche} (اي بحث) يسترجع المقالات التي تم العثور عليها من جراء البحث عن كلمة معينة في واجهة البحث في الموقع. راجع المقال المخصص لمحرك البحث.

Le critère {si ...} permet de conditionner l’exécution d’une boucle à la condition exprimée en argument dans le critère.

|?{

Le critère {si ...} permet de conditionner l’exécution d’une boucle à la condition exprimée en argument dans le critère.

,

Sommaire

Exemple :

<BOUCLE_art(ARTICLES) {si #ID_RUBRIQUE|=={8}} {par date}>
  <a href="#URL_ARTICLE">#TITRE</a>
</BOUCLE_art>

La boucle s’exécutera uniquement si, dans l’environnement d’exécution de la boucle, #ID_RUBRIQUE est égal à "8".

La partie conditionnelle de la boucle, celle inscrite entre </B_art> et <//B_art>, sera quant à elle exécutée dans les deux cas où :

  • soit #ID_RUBRIQUE n’existe pas dans l’environnement ou n’est pas égal à 8 (prise en compte du critère {si ...} ;
  • soit #ID_RUBRIQUE est bien égal à 8 mais la boucle ne retourne aucun résultat.

Ce nouveau critère {si ...}, disponible depuis SPIP 3.0, permet de s’affranchir enfin de l’impossibilité d’utiliser une boucle dans la partie conditionnelle d’une balise.
Par exemple, là où il était nécessaire d’écrire

  [(#SESSION{statut}|=={1comite}|oui) <INCLURE{fond=mapage, ...}> ... ]

parce que mapage.html contenait une boucle, il est désormais possible d’écrire directement dans le squelette appelant (sans INCLURE donc) :

  <BOUCLE_xy(AUTEURS) {si #SESSION{statut}|=={1comite}}> ...

Bien sûr, le critère {si ...} peut porter sur tout type de variables (#ENV, #GET,...)
Par exemple, une boucle dont l’exécution sera conditionnée par le résultat d’un calcul faisant intervenir une variable de l’environnement #ENV{var} (récupérée depuis l’url) et une variable #GET{val} (préalablement définie dans le squelette) :

#SET{val, 2}
<BOUCLE_a(ARTICLES) {si #ENV{var}|plus{#GET{val}}|=={5}}>
...

Voir aussi

La boucle CONDITION

})

 {titre_mot=س س س س} (اسم المفتاح) او{type_mot=ش ش ش ش} (نوع المفتاح) يسترجعان المقالات المرتبطة بالمفتاح الذي يحمل اسم «س س س س» او المرتبطة بالمفاتيح العائدة الى مجموعة المفاتيح «ش ش ش ش». اذا حددنا عدة معايير {titre_mot=س س س س} او {type_mot=ش ش ش ش} في حلقة واحدة، يتم استرجاع كل المقالات التي ترتبط بجميع المفاتيح في آن واحد (جديد SPIP ١.٩).

 {tout} (اي «الكل»): يتم اختيار كل المقالات المنشورة في الموقع (وفي كل الاقسام). وهذا المعيار مفيد اذا اردنا عرض احدث المقالات (الموجودة في كامل الموقع) في الصفحة الرئيسية. (في الحقيقة لا تتم معالجة المعيار «tout» كأمر برمجي: انه تذكير للمطور فقط اذ نحصل على النتيجة نفسها اذا لم نستخدم اي معيار في الحلقة).

 {traduction} (منذ SP<font color="yellow">IP 1.7.1) يسترجع ترجمات المقال الحالي بمختلف اللغات المترجم اليها.

وضعيات المقال

مثل سائر حلقات SPIP، لا تسترجع حلقة ARTICLES الا مقالات منشورة. في حال تم اعداد الموقع لكي لا يعرض المقالات «المؤجلة» يتم تطبيق اختبار اضافي على تاريخ المقال. حتى الاصدار SPIP 1.8.2، لم تكن توجد اية وسيلة تتيح عرض المقالات «قيد التحرير» او «المعروضة للتقييم» او «المرفوضة» ولكن اصبح الامر ممكناً الآن بفضل معيار {statut}:

  • {statut IN prop,prepa,publie,refuse,poubelle} (منذ SPIP 1.8.2) يحدد المقالات نسبة الى وضعيات نشرها:
  • {statut=prepa} يحدد المقالات قيد التحرير في المجال الخاص
  • {statut=prop} يحدد المقالات المعروضد للتقييم في المجال الخاص
  • {statut=publie} يحدد المقالات المنشورة في الموقع العمومي بما فيها المقالات «المؤجلة»
  • {statut=refuse} يحدد المقالات المرفوضة
  • {statut=poubelle} يحدد المقالات التي تم وضعها في المهملات.

معايير العرض

بعد تحديد احد المعايير اعلاه، يمكن اضافة المعايير التالية للحد من عدد المقالات التي نريد عرضها.

 يمكن بالطبع تطبيق المعايير المشتركة لكل الحلقات.

 {exclus} (اي مستثنى) ويتيح استثناء المقال الذي نوجد فيه من المقالات المعروضة (عندما نعرض المقالات الموجودة في القسم نفسه ولا نريد عرض المقال الذي نوجد في صفحته مثلاً).

 {doublons} (اي متكرر) او {unique} (اي فريد): هذان المعياران متطابقان تماماً ويتيحان منع عرض مقالات تم عرضها في حلقات اخرى في الصفحة تحتوي هي ايضاً على المعيار {doublons}.

علامات هذه الحلقة

العلامات المسترجعة من قاعدة البيانات

تعود العلامات التالية الى العناصر المسترجعة مباشرة من قاعدة البيانات. يمكنك استخدامها ايضاً كمعايير فرز وترتيب (مثلاً: {par date} اي حسب التاريخ، او {par titre} اي حسب العنوان).

 #CHAPO يسترجع المقدمة.

 علامات التواريخ: #DATE, #DATE_REDAC, #DATE_MODIF مفصلة في مقال آخر.

 #DESCRIPTIF يسترجع الوصف.

 #ID_ARTICLE يعرض الرقم التسلسلي الفريد للمقال. وهو مفيد لإنشاء وصلات هايبرتكست غير متوقعة (مثلاً الى صفحة «طباعة هذا المقال»).

 #ID_RUBRIQUE تعرض الرقم التسلسلي للقسم الذي يحتوي المقال.

 #ID_SECTEUR تعرض الرقم التسلسلي للقسم الاساسي الذي يحتوي المقال (نذكر ان القسم الاساسي هو القسم الموجود في اصل الموقع).

 #LANG يسترجع لغة المقال.

 #POPULARITE تعرض نسبة شعبية المقال. راجع مقال «شعبية المقالات».

 #PS يسترجع الملاحظة.

 #SOUSTITRE يسترجع العنوان الفرعي.

 #SURTITRE يسترجع العنوان المدخل للمقال.

 #TEXTE يسترجع مادة المقال.

 #TITRE يسترجع عنوان المقال.

 #NOM_SITE et #URL_SITE تعرضان اسم وعنوان URL لرابط هايبرتكست العائد للمقال (اذا تم تفعيل هذا الخيار).

 #VISITES تعرض عدد الزيارات التي سجلها المقال.

العلامات التي يحسبها SPIP

العلامات التالية ناتجة عن المعالجة التي يقوم بها SPIP وبالتالي لا يمكن استخدامها كمعايير ترتيب وفرز.

 #URL_ARTICLE تعرض عنوان URL الخاص بالمقال.

 #NOTES تعرض حواشي المقال (المحسوبة من خلال تحليل النص).

 #INTRODUCTION (منذ SPIP 1.4 ) تعرض وصف المقال والا فتعرض ارل ٦٠٠ حرف من بداية المقال (المقدمة). في الإصدارات السابقة لـSPIP 1.3، كانت دائماً تعرض الأحرف الأولى للمقال (لم يكن الوثف مستخدماً).

 #LESAUTEURS تعرض مؤلفي المقال مع روابط الى صفحاتهم الشخصية (لإتاحة مراسلتهم او الاطلاع على كل مقالاتهم المنشورة في الموقع). مع هذه العلامة يمكن الاستغناء عن بناء حلقة AUTEURS للوصول الى النتيجة نفسها. في الإصدارات السابقة لـSPIP ١.٩، كانت هذه العلامة تعرض اسماء مؤلفي المقال مع روابط الى بريدهم الالكتروني.

 #PETITIONتعرض نص العريضة المرتبطة بالمقال اذا وجدت. واذا وجدت ولكن نصها فارغ، تسترجع مسافة (اي سلسلة غير فارغة لا تؤثر على علامات html في الصفحة).

 #FORMULAIRE_SIGNATURE تبني استمارة توقيع العريضة المرتبطة بالمقال وتعرضها.

 #FORMULAIRE_FORUM تبني استمارة ارسال مشاركة الى المنتدى المرتبط بالمقال وتعرضه. انظر «الاستمارات» لمزيد من المعلومات.

 #PARAMETRES_FORUM تبني وتعرض قائمة لمتغيرات التي تستثمرها استمارة المنتدى لإتاحة الرد على المقال. مثلاً:

[<a href="spip.php?page=forum&(#PARAMETRES_FORUM)">الرد على هذا المقال</a>]

منذ SPIP 1.8.2 يمكن تمرير متغير يحدد عنوان الصفحة التي يعود اليها الزائر بعد آرسال المشاركة. مثلاً: <a href="spip.php?page=forum&(#PARAMETRES_FORUM{#SELF})">الرد على هذا المقال</a>

لمحة تاريخية: في الإصدارات السابقة لـSPIP ١.٩، كان يجب كتابة forum.php3? وليس spip.php?page=forum&

بشكل عام وحتى SPIP ١.٩ كانت عناوين URL التي ينتجها SPIP على شكل http://mysite.net/xxx.php3 وليس http://monsite.net/spip.php?page=xxx.

الشعارات

 #LOGO_ARTICLE وهو شعار المقال ويمكن اضافة شعار حوم اليه (اي تغيير الشعار عندما يحوم مؤشر الفأرة فوقه).

 #LOGO_ARTICLE_RUBRIQUE شعار المقال الذي يمكن وضع شعار القسم مكانه في حال غيابه.

 #LOGO_RUBRIQUE شعار القسم الذي يحتوي المقال.

ويتم وضع الشعارات بالطريقة التالية:

[(#LOGO_ARTICLE|محاذاة|عنوان)]

ويمكن للمحاذاة ان تكون الى اليمين (right) او اليسار (left). اما العنوان فهو عنوان URL الذي يدل اليه الرابط المرتبط بالشعار (مثلاً #URL_ARTICLE). واذا لم نحدد عنوان يبقى الشعار دون رابط.

اذا اردنا استرجاع اسم ملف الشعار مباشرة (فالعلامات السابقة تنتج علامات html كاملة لإدراج الصورة في الصفحة)، لعرض الصورة كخلفية جدول مثلاً، نستخدم المرشح |file كالتالي: [(#LOGO_ARTICLE|file)].

من ناحية اخرى هناك علامتان تتيحان استرجاع احد الشعارين (الشعار الاساسي وشعار الحوم):

 #LOGO_ARTICLE_NORMAL للشعار دون الحوم،
 #LOGO_ARTICLE_SURVOL لشعار الحوم.

مؤلف George نُشر في: تم التحديث: 21/03/23

الترجمات: عربي, català, Deutsch, English, Español, français, italiano, Nederlands, русский, українська