MediaWiki Custom Skin: تحقق مما إذا كانت الصفحة الحالية الصفحة الرئيسية

StackOverflow https://stackoverflow.com/questions/3592299

سؤال

أقوم بإعداد مجموعة من لغة MediaWiki المختلفة على قاعدة كود واحدة. حتى الآن يعمل معظمه ، لكنني أريد استخدام صفحة رئيسية تبدو مختلفة عن بقية الصفحات. للقيام بذلك ، قمت في الأصل بإضافة بعض قواعد CSS التي تنطبق فقط على فئة Main_Page:

body .page-Main_Page { <rules> }

المشكلة هي أنه في اللغات الأخرى ، تسمى الصفحة الرئيسية بشكل مختلف (ويتغير الفصل وفقًا لذلك) ، لذلك يجب علي إضافة قواعد CSS لجميع عناوين الصفحة الرئيسية الممكنة (لا ستحدث) أو إجراء فحص داخل الجلد الذي يضيف أ الفصل إلى الجسم إذا كانت الصفحة الحالية هي الصفحة الرئيسية.

لسوء الحظ ، لا توجد طريقة للتحقق من ذلك. تعتمد معظم الحلول التي قمت بها على googled إما على "الصفحة الرئيسية" أو تعيين عنوانك الخاص. أريد أن يكتشف الجلد العنوان تلقائيًا.

الحل الوحيد الذي فكرت فيه حتى الآن هو أخذ متغير MediaWiki لعنوان URL الرئيسي للمقارن بعنوان الصفحة الحالي:

$mainurl = $this->data['nav_urls']['mainpage']['href'];
$ismain = $this->data['thispage'] == substr($mainurl,'6');

(يبدأ [Href "] بـ /wiki /، وبالتالي إزاحة 6)

و لاحقا

<body class="<?php echo ($ismain ? 'mainpage' : ''); ?>">    

(وبعض الفصول الأخرى بالطبع ، لكنك تحصل على الفكرة)

لكن هذا يعطيني مشكلة أخرى. باللغة الإسبانية ، تسمى الصفحة Página Principal. لا تواجه البيانات ["هذه الحالة"] أي مشاكل في ذلك ، ولكن يتم حفظ ['href'] كـ /wiki /p ٪ c3 ٪ a1gina_principal

لذلك ... هل يمكن لأي شخص أن يخبرني كيف 1. ابحث عن الترجمة لـ "الصفحة الرئيسية" باللغة المستخدمة حاليًا أو 2. تحويل P ٪ C3 ٪ A1GINA_PRINCIPAL إلى Página Principal (وما شابه ذلك للغات الأخرى) أو 3 . أرني طريقة أخرى للتحقق مما إذا كنت على الصفحة الرئيسية؟

هل كانت مفيدة؟

المحلول 2

هاها يا إلهي ، كان الأمر بسيطًا جدًا.

$this->data['skin']->mTitle->mUrlform == $mainurl;

حسنًا ، هذا يثبت مرة أخرى أن كتابة مشكلتك لشخص آخر يمكن أن يعطيك في بعض الأحيان الرؤية التي تحتاجها ..: P

نصائح أخرى

هناك في الواقع طريقة أبسط:

if ($this->getSkin()->getTitle()->isMainPage())

يعود منطقية

لسوء الحظ ، لا يعمل لي مع MediaWiki 1.16.4. نظرت إليها قليلاً وتعمل (بالنسبة لي) عند التحقق

$this->data['skin']->mTitle->mUrlform == "Main_Page"

المشكلة هي

$this->data['nav_urls']['mainpage']['href'] == "/en/Main_Page"

لذلك يتطلب بعض التفكير أكثر للوصول إلى حل أكثر عامة.

(يمكن أن يكون ذلك الترقية إلى MW لاحقًا سيجعل الكود أعلاه يعمل.)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top