it-swarm-vi.com

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

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 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 tạo một hàm MYTHEME_links__system_mynav_menu như 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?

11
RoToRa

Để 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 vấn đề
[.__.] Vấn đề # 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 dấu vết 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ự. Các vấn đề này tồn tại rất lâu trong cộng đồng drupal vì vậy 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 menKhối men . Cả hai đều có thể giúp di chuyển xung quanh hệ thống menu trong Drupal 7.

25
Steven

Bên trong template.php của chủ đề, đây là cách để thực hiện mọi thứ 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) {

  }
2
iStryker