المبدأ العام

يتم تثبيت كل محتوى الموقع المطور بواسطة SPIP في قاعدة بيانات MySQL. ولعرض هذه المعلومات على زوار الموقع، يجب تنفيذ عملية قراءة المعلومات ثم تنظيمها وتنسيقها في صفحات HTML يعرضها المتصفح.

ولكن هذه العملية لا تخلو من الصعوبة والتعقيد، اللهم الا اذا استخدمنا اداة ادارة مثل SPIP:
- يجب اتقان البرمجة بلغة PHP وMySQL وكتابة مقاطع برمجية معقدة.
- يجب دمج هذه المقاطع في تصميم صفحات HTML مما يزيد في ثقل العملية.
- يجب تطوير واجهة كاملة للسماح للمستخدمين بتغيير محتوى قاعدة البيانات.
- يجب الأخذ في الحسبان مسائل الأداء: فاللجوء الدائم الى اوامر MySQL وPHP يستهلك الكثير من موارد الجهاز ويؤدي الى ابطاء أداء الموقع وفي أقصى الحالات الى تعطل جهاز الخدمة.

يوفر SPIP حلاً متكاملاً لتخطي هذه العقبات:
- يتم إنشاء تصميم الصفحات بواسطة قوالب بتنسيق HTML اسمها «صفحات نموذجية» وتحتوي على أوامر مبسطة تسمح بتحديد مكان وضع المعلومات المسترجعة من قاعدة البيانات وكيفية وضعها في الصفحة.
- يتيح نظام ذاكرة مخبأة تخزين كل صفحة وبالتالي تجنب النداءات المتكررة الى قاعدة البيانات في كل زيارة. فإضافة الى تخفيف الحمل على جهاز الخدمة، تساهم هذه الذاكرة في تسريع التصفح كما تؤمن توافر الموقع حتى في حال تعطل قاعدة البيانات.
- يتيح «مجال خاص» للمدراء والمحررين إدارة مجمل بيانات الموقع.

صفحة نموذجية لكل نوع من صفحات الموقع

ان ميزة (وحدود) نظام نشر آلي تكمن في تحديد قالب مثلاً لكل المقالات. ونحدد في هذا القالب (الصفحة النموذجية) اين سيظهر عنوان المقال ومادته وروابط التصفح الخ. ويقوم النظام بإنتاج كل صفحة مقال بوضع هذه العناصر التي سحبها من قاعدة البيانات آلياً في أماكنها المحددة في تصمميم الصفحة الذي اعتمده مطور الموقع.

يقدم هذا النظام الآلي اذن عرضاً متماسكاً اخل الموقع... ولكن هذه ايضاً هي محدوديته: فهو لا يتيح تحديد واجهة مختلفة لكل صفحة على حدة (سنرى في ما بعد ان SPIP يسمح ببعض المرونة في هذا المجال).

عندما تثبت SPIP، يقدم لك النظام مجموعة افتراصية من الصفحات النموذجية التي يخزنها في مجلد /dist، في أصل الموقع. فإذا اردت تعديل هذه الصفحات لتكييفها حسب حاجاتك او اذا اردت تثبيت مجمعة أخرى من الصفحات النموذجية، يجب إنشاء مجلد جديد اسمه /squelettes في أصل الموقع أيضاً. لمزيد من التفاصيل حول هذه المسألة يمكن الرجوع الى المقال أين تضع ملفات الصفحات النموذجية؟.

عندما يطلب احد الزوار صفحة http://exemple.org/spip.php?article3437، يجلب SPIP صفحة نموذجية اسمها «article.html». ويعتمد SPIP على عنوان URL العائد للصفحة ليعرف اي صفحة نموذجية يستخدم:

عنوان URL يجلب الصفحة النموذجية
spip.php?article3437 article.html
spip.php?rubrique143 rubrique.html
spip.php?mot12 mot.html
spip.php?auteur5 auteur.html
spip.php?site364 site.html

هناك حالتان مختلفتان:

- العنوان spip.php يجلب الصفحة sommaire.html. انها الصفحة الأساسية في الموقع.
- العنوان spip.php?page=abcd يجلب الصفحة abcd.html. بمعنى آخر، يمكنك إنشاء صفحات نموذجية لم يشملها النظام في مجموعة صفحاته الافتراضية وإعطائها الأسماء التي تشاء.

وتستخدم هذه الكتابة أيضاً لصفحات مثل خريطة الموقع او نتائج البحث، مثلاً: spip.php?page=plan وspip.php?page=recherche&recherche=سنجاب.

عندما يجلب SPIP صفحة نموذجية، يمرر لها السياق

من جهة أخرى، لا بد انك لاحظت ان عنوان URL يحتوي عناصر أخرى إضافة الى اسم الصفحة النموذجية. مثلاً في spip.php?article3437، يحتوي العنوان رقم المقال المطلوب وفي spip.php?page=recherche&recherche=سنجاب، يحتوي الكلمة المطلوب البحث عنها (سنجاب).

هذا يسمى «السياق» اي معامل بيئة واحد او اكثر يوفرها SPIP للصفحة النموذجية وتُستخدم لبناء الصفحة. فتحتاج صفحة المقالات article.html مثلاً، ان تعرف رقم المقال المطلوب لاسترجاع عنوانه ونصه وعناصره الأخرى من قاعدة البيانات. كذلك تحتاج صفحة البحث recherche.html ان تعرف ما هي الكلمات التي يطلب الزائر البحث عنها للعثور على معلومات قاعدة البيانات التي تحتوي هذه الكلمات.

في عناوين URL تظهر معاملات البيئة بعد علامة «?». وعندما يكون هناك أكثر من معامل واحد يتم وضع علامة «&» بينها.

ففي عنوان spip.php?page=recherche&recherche=سنجاب مثلاً، هناك متغيرين إثنين هما page وrecherche يأخذان القيميتين «recherche» و«سنجاب».

في عنوان spip.php?article3437، اختصر SPIP العنوان وهو في الحقيقة spip.php?page=article&id_article=3437 (يمكنك تجربة هذا العنوان لتتأكد انه سليم). عندنا هنا اذن، متغيرين إثنين هما page وid_article الذي يأخذ قيمة «3437». ويتيح هذين المتغيرين للنظام استخدام بيانات المقال ٣٤٣٧ في الصفحة النموذجية article.html.

عرض مبسط لمبدأ عمل الذاكرة المخبأة

رسم مبسط لنظام الذاكرة المخبأة

يبحث SPIP في الذاكرة المخبأة CACHE عن الصفحة التي يطلبها عنوان URL.

  1. اذا كانت الصفحة موجودة، يتأكد SPIP من انها ليست قديمة.
    1. اذا كانت الصفحة قديمة، يقوم بإعادة بنائها باستخدام الصفحة النموذجية والمعلومات المخزنة في قاعدة البيانات. ثم يحفظها في الذاكرة المخبأة مكان الصفحة القديمة ويرسلها الى الزائر.
    2. اذا كانت الصفحة حديثة، يرسلها الى الزائر.
  2. اذا كانت الصفحة غير موجودة في الذاكرة المخبأة، يقوم ببنائها باستخدام الصفحة النموذجية والمعلومات المخزنة في قاعدة البيانات. ثم يحفظها في الذاكرة المخبأة مكان الصفحة القديمة ويرسلها الى الزائر.

لدى زيارة تالية للصفحة، واذا كانت الفترة بين الزيارتبن قصيرة، سيتم عرض الصفحة المخزنة في الذاكرة /CACHE دون الحاجة الى تنفيذ عملية بناء من قاعدة البيانات. وفي ال تعطّل قاعدة البيانات، سيتم استرجاع الصفحة الموجودة في الذاكرة المخبأة حتى لو أصبحت «قديمة».

ملاحظة: نرى هنا انه يتم حفظ كل صفحة من الموقع على حدة في الذاكرة المخبأة وان اعادة الحساب تسببها زيارات الموقع. فليس هناك إعادة حساب لكل صفحات الموقع دفعة واحدة وفي فترات منتظمة (فهكذا عملية تضاعف الثقل على جهاز الخدمة مما يؤدي أحياناً الى تعطله).

افتراضياً، تعتبر الصفحة «قديمة» بعد مرور ٣٦٠٠ ثانية على بنائها. [1]

ملف html.

في SPIP، نعطي اسم الصفحات النموذجية لملفات .html. وهي التي تصف الواجهة الرسومية لصفحات الموقع.

هذه الصفحات مكونة مباشرة من علامات HTML ويضاف اليها تعليمات تسمح للنظام بمعرفة مكان وضع العناصر المسترجعة من قاعدة البيانات (مثلاً: «ضع العنوان هنا» و«اعرض هنا قائمة بالمقالات العائدة الى الموضع نفسه»...).

وتتم كتابة هذه التعليمات بلغة خاصة هي موضوع هذا الدليل. وتشكل هذه اللغة الصعوبة الوحية في استخدام SPIP.

«ماذا؟ لغة أخرى؟؟» نعم! يجب تعلّم لغة جديدة. الا انها ليست معقدة وتتيح بناء واجهات متطورة بسرعة. ومقارنة بلغة PHP/MySQL، ستجد انها توفر وقتك بشكل كبير (خاصة انها ابسط بكثير). انها لغة علامات اي انها تستخدم علامات مثل لغة HTML.

ملاحظة: كما اننا نتعلم HTML بالنظر الى المواقع التي نزورها، يمكنك تعلّم لغة SPIP من زيارة المواقع المعتمدة عليه. فيكفي تحميل ملف «html.» المناسب للصفحة المعروضة. على سبيل المثال، يمكنك الاطلاع على الصفحات النموذجية الخاصة بمقالات هذا القسم (انظر الى الرموز البرمجية اللازمة للحصول على نص هذه الصفحة).

واجهة مختلفة في الموقع نفسه

إضافة الى تصميم الصفحات الافتراضي لمحتوى الموقع (rubrique.html وarticle.html الخ.)، يمكنك إنشاء صفحات نموذجية مختلفة لأقسام معينة في الموقع. فيكفي إنشاء ملفات html. جديدة واعطائها اسماء حسب المبدأ التالي:

- واجهة مختلفة لقسم معين وما يحتويه (أقسام فرعية، مقالات، أخبار، الخ.): يجب إضافة «-رقم» في آخر اسم ملف الصفحة النموذجية المخصصة للقسم المناسب (اي خط يتبعه رقم القسم).

على سبيل المثال، اذا قمت بإنشاء ملف rubrique-60.html، سينطبق هذا الملف على القسم رقم ٦٠ وأقسامه الفرعية بدلاً من الملف rubrique.html. اما الملف article-60.html فينطبق على مقالات القسم رقم ٦٠. واذا كان هذا القسم يحتوي على أقسام فرعية، ستعتمد مقالات هذه الأقسام الفرعية الصفحة النموذجية الجديدة. والأمر نفسه يسري على breve-60.html (للأخبار) وهكذا دواليك.

- واجهة مخصصة لقسم واحد (SPIP 1.3). يمكن إنشاء واجهة تنطبق على قسم واحد وليس على أقسامه الفرعية. يجب هنا إضافة «=رقم» في آخر اسم ملف الصفحة النموذجية المخصصة للقسم المناسب.

على سبيل المثال، يجب إنشاء ملف rubrique=60.html لينطبق على القسم رقم ٦٠ ولكن ليس على أقسامه الفرعية. والشيء نفسه للملفات article=60.html وbreve=60.html الخ. وتنطبق هذه الملفات على محتوى القسم رقم ٦٠ ولكن ليس على محتوى أقسامه الفرعية التي ستعتمد الصفحات النموذجية الافتراضية.

ملاحظة: الرقم الظاهر في اسم الملف هو رقم قسم موجود. اما الملفات article-60.html او article=60، فلا تنطبق على المقال رقم ٦٠ ولكن على المقالات الموجودة في القسم رقم ٦٠.

ماذا نضع في ملف html.

ملفات .html هي أساساً ملفات نصية، تضاف اليها تعليمات لوضع عناصر آتية من قاعدة البيانات.

ويحلل SPIP تعليمات التموضع هذه (وهي مكتوبة بلغة SPIP الخاصة) ولا يهتم أبداً بما هو موجود في الملف وليس مكتوباً بلغته الخاصة.

اذن، فمحتوى هذه الملفات الأساسي هو لغة HTML. ومطور الموقع هو الذي يحدد علامات HTML الذي يريدها وإصدار HTML الذي يريد الخ. يمكن بالطبع إضافة أوراق إنماط وأوامر جافاسمريبت ومشاهد فلاش وغيرها من مكونات صفحات النسيج العادية.

كما يمكن (فكل هذا ليس الا نصاً) انتاج علامات XML (مثلاً ملف «backend.html» ينتج علامات XML).

أكثر من ذلك: كل الصفحات التي تعرض على زائر الموقع تأتي من الذاكرة المخبأة (CACHE) بواسطة صفحة مكتوبة بلغة PHP. يمكنك اذن، ادخال أوامر PHP في صفحاتك النموذجية فيتم تنفيذها خلال زيارة الصفحة. وباستخدامها بشكل دقيق، يمكن لهذه الميزة ان توفر الكثير من المرونة لنظام SPIP الذي زتي لتكميله (مثلاً: إضافة عداد زيارات...) او حتى لتحسين بعض وظائف تصميم الصفحة بالاعتماد على المعلومات المسترجعة من قاعدة البيانات.

حواشي

[1عندما تتمكن من لغة SPIP يمكنك تغيير هذه الفترة باستخدام علامة #CACHE.

صالة العرض

هذا المقال لا يتطرق الا الى الاصدار SPIP ١.٩ وما بعده. للاصدارات السابقة، يمكن قراءة نسخة الارشيف.

مؤلف جورج نُشر في: تم التحديث: 26/10/12

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