วิธีการชุดรูปแบบบล็อกเมนู?


11

ฉันได้สร้างเมนูที่กำหนดเอง (เรียกว่า "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">...)
}

แต่ดูเหมือนจะไม่ได้มีผลกระทบ

ผมทำอะไรผิดหรือเปล่า?


นี่น่าจะเป็นสิ่งซ้ำซ้อนของdrupal.stackexchange.com/questions/2258/…
tim.plunkett

1
คำถามอื่น ๆ เกี่ยวกับการเพิ่ม ID เมนูที่ไม่ซ้ำกันในขณะที่คำถามนี้เป็นเรื่องทั่วไปมากขึ้น
kiamlaluno

คำถามที่แน่นอนเกี่ยวกับ stackoverflow: stackoverflow.com/questions/11935477/…
กรงเล็บ

คำตอบ:


25

ในการจัดธีมรายการที่ไม่ได้เรียงลำดับคุณต้องเรียกใช้ 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 ดังนั้นฉันไม่แน่ใจว่าพวกเขาจะได้รับการแก้ไขในไม่ช้าทุกเวลา ฉันไม่รู้ว่ามีบาง PHP ที่สามารถช่วยได้หรือไม่ คุณสามารถเปิดให้โมดูลทางเลือกบางอย่างเพื่อให้ความช่วยเหลืออย่างง่ายดาย functionaltiy เช่นแอตทริบิวต์เมนูและเมนูที่ถูกบล็อก พวกเขาทั้งสองสามารถช่วยให้รอบระบบเมนู cruddy ใน Drupal 7


2

ภายใน 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) {

  }

MYTHEME_menu_linkดูเหมือนว่าจะจัดการกับแต่ละลิงก์เท่านั้น ulฉันไม่สามารถเข้าถึง
RoToRa

ฉันกำลังดูอยู่ฉันไม่ทราบว่าคุณสามารถทำได้อีกต่อไป ฉันรู้ว่าด้วย Drupal 7 คุณมีพลังมากกว่าลิงก์ แต่ใช้พลังงานน้อยกว่าเมนู
iStryker
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.