it-swarm.asia

كيفية تعيين عنصر قائمة نشط؟

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

هل هناك طريقة لتنشيطه تلقائيًا؟

حاولت استخدام menu_position ولكن يبدو أنه لا يعمل.

5
Luiz Guilherme

السياق يوفر هذه الوظيفة من خارج منطقة الجزاء.

10
Capi Etheriel

هناك الكثير من الطرق. أدرج هنا فقط الأشياء المتوافقة مع D7 وأخيرًا على D6.

استخدم وحدات

كود الاشياء الخاصة بك

هم الآن واجهة برمجة تطبيقات أصلية menu_tree_set_path لتعيين المسار الذي تريد استخدامه لحساب المسار النشط في القائمة.

يمكنك أيضًا العمل في theme_links ولكنني أوصي باستخدام menu_tree_set_path حتى تعرف الوحدة الأخرى ما هو رابطك النشط. الميزة هي أنه يمكنك استخدام هذه الوظيفة في السمة الخاصة بك دون إنشاء وحدة نمطية.

ضع في اعتبارك أن لدى menu_position واجهة برمجة تطبيقات لإنشاء قواعدك المخصصة.

فماذا أستخدم ؟؟؟

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

إذا كان لديك بنية url جيدة (autopath) من اتباع بنية القائمة الخاصة بك ، فإن menu_trail_by_path سيعمل فقط دون أي جهد.

لم أستخدم أبدًا menu_position ... لذا يمكنني أن أقول.

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

13
gagarine

أسهل طريقة هي جعل عناصر القائمة هذه من صفحاتك "الداخلية" (الصفحات الفرعية التي تنتمي إلى المناطق/الصفحات المقصودة) تابعة لعناصر قائمة الصفحات المقصودة.

شيء مثل:

 قائمة الروابط الأساسية 
 | 
 + - عنصر قائمة الصفحة المقصودة 1 
 | | 
 | + - عنصر قائمة صفحة داخلية 1 
 | + - عنصر قائمة الصفحة الداخلية 2 
 | 
 + - عنصر القائمة الصفحة المقصودة 2 
 | 
 + - عنصر القائمة الصفحة 3 الداخلية 
 + - عنصر قائمة صفحة داخلية 4 

إذا كان عليك الاحتفاظ بها في قوائم منفصلة على الرغم من ذلك ، فربما تحتاج إلى اللعب باستخدام theme_links () للاحتفاظ بالفصول "Active-trail" و/أو "active" المناسبة.

3
Maciej Zgadzaj

ربما وحدة كتلة القائمة سوف تساعدك.

(بالاقتران مع النهج الذي يحدده Maciej أعلاه).

من صفحة مشروع كتلة القائمة:

يوفر كتل قابلة للتكوين من أشجار القائمة بدءًا بأي مستوى من أي قائمة. و اكثر!

لذلك ، إذا كنت تستخدم ميزة روابط القائمة الرئيسية الخاصة بموضوعك فقط ، فيمكنك إضافة وتهيئة قالب "القائمة الرئيسية (المستويات 2+)". ستظهر هذه الكتلة بمجرد أن تكون في إحدى صفحات القائمة الرئيسية وستعرض شجرة القائمة للمستوى الثاني (وأعمق) من القائمة الرئيسية الخاصة بك وستتوسع أثناء عبور الشجرة. يمكنك أيضًا تحديد عمق شجرة القائمة (مثل "القائمة الرئيسية (المستويات 2-3)") و/أو توسيع جميع القوائم الفرعية الفرعية (مثل "القائمة الرئيسية (المستويات الموسعة 2+)").

1
iainp999

يمكنك أيضًا استخدام hook_translated_menu_link_alter(). سيكون هذا صعبًا بعض الشيء.

/**
 * Implements hook_translated_menu_link_alter()
 */
function Module_translated_menu_link_alter(&$item, $map) {

    if ($item['menu_name'] == 'menu-name') {

        //check first two arg from url
        $path = arg(0)."/".arg(1);

        //add class active-trail if path match
        if (strpos($item['link_path'], $path) !== false) {
            $item['in_active_trail'] = true;

        }

    }
}
0
batMask