Làm thế nào để chủ đề một khối menu?


11

Tôi đã tạo một menu tùy chỉnh (hãy gọi nó là "mynav") và trong chủ đề của tôi, tôi đã tạo một mẫu dành riêng cho nó ( block--menu--menu-mynav.tpl.php) có chứa:

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

Điều này hoạt động tốt.

Tuy nhiên, tôi muốn áp dụng id cho danh sách không có thứ tự được tạo và chứa trong đó $content. Tôi đoán tôi cần phải tạo một chức năng MYTHEME_links__system_mynav_menunhư thế này:

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

nhưng nó dường như không có ảnh hưởng.

Tôi đang làm gì sai?


Đây có thể là bản sao của drupal.stackexchange.com/questions/2258/ trên
tim.plunkett

1
Câu hỏi khác là về việc thêm một ID menu duy nhất, trong khi câu hỏi này chung chung hơn.
kiamlaluno

Câu hỏi chính xác về stackoverflow: stackoverflow.com/questions/11935477/ trộm
móng vuốt

Câu trả lời:


25

Để tạo chủ đề cho danh sách không có thứ tự, bạn cần gọi theme_menu_tree (). Bạn có thể chỉnh sửa template.php của bạn để gọi nó.

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

Sau đó, nếu bạn muốn tạo chủ đề cho các liên kết của mình, hãy gọi 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";
}

Bây giờ, vấn đề với Drupal 7 là có một lỗi lớn khi hiển thị đường dẫn hoạt động của các menu tùy chỉnh.

Xem sự
cố Sự cố # 520106 - Không có cách nào để tự động đặt đường dẫn hoạt động
Vấn đề # 942782 - Menu tùy chỉnh không bao giờ nhận được đường dẫn hoạt động

Về cơ bản, bạn không gặp may nếu muốn có một số menu tùy chỉnh thực sự. Những vấn đề này tồn tại rất lâu trong cộng đồng drupal nên tôi không chắc liệu chúng có được khắc phục sớm hay không. Tôi không biết nếu có một số PHP có thể giúp với nó. Bạn có thể chuyển sang một số mô-đun thay thế để giúp giảm bớt chức năng, như Thuộc tính MenuKhối Menu . Cả hai đều có thể giúp đi xung quanh hệ thống menu cruddy trong Drupal 7.


2

Bên trong template.php của chủ đề, đây là cách thực hiện trong Drupal 6

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

Trong Drupal 7 bạn cần gọi

  function MYTHME_menu_link(array $variables) {

  }

MYTHEME_menu_linkdường như chỉ xử lý các liên kết cá nhân. Tôi không thể đạt được ul.
RoToRa

Tôi đang xem xét nó, tôi không biết nếu bạn có thể nữa. Tôi biết với Drupal 7, bạn có nhiều quyền lực hơn các liên kết, nhưng ít quyền lực hơn trên các menu.
iStryker
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.