it-swarm.asia

كيف تصمم كتلة قائمة؟

لقد قمت بإنشاء قائمة مخصصة (دعنا نسميها "mynav") وفي موضوعي قمت بإنشاء قالب مخصص لها (block--menu--menu-mynav.tpl.php) الذي يحتوي على:

<div id="mynav" class="<?php print $classes; ?>"<?php print $attributes; ?>>
  <?php print $content ?>
</div>

هذا يعمل بشكل جيد.

ومع ذلك ، أفضل تطبيق المعرّف على القائمة غير المنظمة التي يتم إنشاؤها واحتواءها في $content. أعتقد أنني بحاجة إلى إنشاء وظيفة MYTHEME_links__system_mynav_menu مثله:

function MYTHEME_links__system_mynav_menu($variables) {
  return "TEST"; // Generate HTML here (<ul id="mynav">...)
}

ولكن لا يبدو أن لها تأثيرًا.

ما الخطأ الذي افعله؟

11
RoToRa

لتخصيص قائمة غير مرتبة ، تحتاج إلى استدعاء theme_menu_tree (). يمكنك تحرير template.php الخاص بك من أجل استدعاء هذا.

function THEMENAME_menu_tree__MENUNAME($variables){
  return '<ul class="your-custom-class" id="your-custom-id">' . $variables['tree'] . '</ul>';
}

بعد ذلك ، إذا كنت تريد تصميم روابطك ، فاتصل theme_menu_link ().

function THEMENAME_menu_link__MENUNAME($variables) {
  $element = $variables['element'];
  $sub_menu = '';

  if ($element['#below']) {
    $sub_menu = drupal_render($element['#below']);
  }
  $output = l($element['#title'], $element['#href'], $element['#localized_options']);
  return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}

الآن ، المشكلة مع Drupal 7 هو أن هناك خطأ كبير عندما يتعلق الأمر بعرض المسار النشط للقوائم المخصصة.

انظر القضية
المشكلة رقم 520106 - لا توجد طريقة لتعيين الممر النشط ديناميكيًا
العدد # 942782 - القوائم المخصصة لا تتلقى مسارًا نشطًا مطلقًا

إذا كنت تريد بعض القوائم المخصصة الحقيقية ، فأنت خارج الحظ. هذه المشكلات طويلة الأمد في drupal Community لذا لست متأكدًا مما إذا كان سيتم حلها في أي وقت قريب. لا أعرف إذا كان هناك بعض PHP = يمكن أن يساعد في ذلك. يمكنك اللجوء إلى بعض الوحدات البديلة من أجل المساعدة في تسهيل الوظائف ، مثل سمات القائمة و كتلة القائمة . نظام القائمة في Drupal 7.

25
Steven

داخل template.php الخاص بموضوعك ، كانت هذه هي الطريقة للقيام بالأشياء في Drupal 6

function MYTHEME_links__system_mynav_menu($variables) {
  return "TEST"; // Generate HTML here (<ul id="mynav">...)
}

في Drupal 7 تحتاج إلى الاتصال

  function MYTHME_menu_link(array $variables) {

  }
2
iStryker