عندما يكون لدينا عناصر نصوص وحلقات تتردد في عدة ملفات، قد نرغب في استخراج هذه العناصر من الصفحات الموجودة فيها ووضعها في ملف منفصل وندائها من الصفحات النموذجية الاخرى. بهذه الطريقة تكون الوظائف المشتركة مجموعة في ملف واحد مما يسهّل ادخال التعديلات عليها والتي تنعكس على باقي الصفحات النموذجية.
يعرف المتمرسون في PHP دالة include
، فتصرفها مشابه لما نتحدث عنه هنا.
في SPIP يمكن نداء صفحة نموذمجية من داخل صفحة نموذجية اخرى بفضل علامة <INCLURE>
(يمكن ايضاً استخدام <INCLUDE>
وهي الوظيفة نفسها). اما تركيبتها الاملائية، فهي:
<INCLURE(file.php3){parameter}...>
ويكون «file.php3» اسم الملف الذي نريد دمجه في الصفحة. على سبيل المثال، لنفرض ان كل صفحات الموقع تعرض المعلومات نفسها في اسفلها. يمكن اذاً جمع اوامر HTML لهذه المعلومات في ملف «footer.html
»، وهو صفحة نموذجية يتم نداؤها من «footer.php3
» (دائماً حسب مبدأ زوج الملفات الذي يشكل الصفحة النموذجية). ويكفي عندها اضافة السطر التالي في الموقع المطلوب، في كل الصفحات التي تعرض هذه المعلومات السفلية:
<INCLURE(footer.php3)>
ويمكن لبعض الادراجات ان تعتمد على السياق. مثلاً، لنفرض ان هناك صفحة نموذجية اسمها «hierarchy
تعرض المسار من اصل الموقع الى قسم ما. نقوم بنداء هذه الصفحة بواسطة عنوان URL على الشكل التالي: «hierarchy.php3?id_rubrique=xxx
».
وفي الصفحات النموذجية التي يجب ان تعرض هذه الهرمية من القسم الجاري الى اصل الموقع، يتم تحديد العامل المطلوب وهو {id_rubrique}
. ونكون قد انشأنا حلقة تتيح استرجاع رقم القسم هذا ثم ندمج صفحة الهرمية كالتالي:
<INCLURE(hierarchy.php3){id_rubrique}>
ملاحظة: في هذه الحالة، تكون الصفحة النموذجيةhierarchy.html
بادئة بحلقة حول الاقسام حسب المعيار{id_rubrique}
...
يمكن الافتراض ايضاً انه في بعض الصفحات النموذجية، لا نريد استرجاع الهرمية نسبةً الى قسم متغير (يتم تمرير قيمته في عنوان URLمثلاً) ولكن نسبةً الى قسم ثابت نعرف رقمه مسبقاً. من اجل ذلك يمكن تحديد قيمة العامل الداخل في امر الدمج هكذا:
<INCLURE(hierarchy.php3){id_rubrique=5}>
ملاحظة: من الممكن تحديد عدة عوامل في العلامة <INCLURE>
. الا ان هذه الحالة نادرة عملياً. فتجنب اضافة عوامل غير ضرورية تؤدي الى انخفاض في فعالية الذاكرة المخبأة والى ابطاء الموقع.
ملاحظة: لا تنسى ان الملف المدمج هو نفسه صفحة نموذجية وبالتالي فإنه يملك متغيّر $delais
[1]. قد يكون ذلك عملياً لفصل العناصر الثقيلة في الموقع والتي لا نريد اعادة معالجتها بوتيرة سريعة عن العناصر الخفيفة الديناميكية التي يجب تحديثها كثيراً (مثل الترخيص).
ويتيح SPIP 1.7.1 استرجاع صفحة نموذجية مع العامل lang=...
بالشكل التالي:
<INCLUDE(...){lang}>
او
<INCLUDE(...){lang=xx}>
حيث تعادل قيمة "xx" رمز اللغة المطلوبة بمقياس ISO اي ar للعربية او en للانكليزية وهكذا (انظر عولمة الصفحات النموذجية).
لنرجع الى مثال المعلومات السفلية:
<INCLUDE(footer.php3){lang}>
يدمج هذا الامر الملف باللغة الافتراضية للموقع. اما الامر التالي، فيدمج الملف الانكليزي للمعلومات السفلية:
<INCLUDE(footer.php3){lang=es}>