it-swarm-id.com

Bagaimana cara tema blok menu?

Saya telah membuat menu khusus (sebut saja "mynav") dan dalam tema saya, saya telah membuat templat khusus untuk itu (block--menu--menu-mynav.tpl.php) yang mengandung:

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

Ini berfungsi dengan baik.

Namun saya lebih suka menerapkan id ke daftar unordered yang dihasilkan dan terkandung dalam $content. Saya kira saya perlu membuat fungsi MYTHEME_links__system_mynav_menu seperti ini:

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

tetapi tampaknya tidak memiliki pengaruh.

Apa yang saya lakukan salah?

11
RoToRa

Untuk memilih tema dari daftar yang tidak diurutkan, Anda perlu memanggil theme_menu_tree (). Anda dapat mengedit template.php Anda untuk memanggil ini.

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

Lalu, jika Anda ingin menentukan tema tautan Anda, panggil 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";
}

Sekarang, masalah dengan Drupal 7 adalah bahwa ada bug besar ketika datang untuk menampilkan jejak aktif menu kustom.

Lihat masalah
Masalah # 520106 - Tidak ada cara untuk secara dinamis mengatur jejak aktif
Masalah # 942782 - Menu khusus tidak pernah menerima jejak aktif

Anda pada dasarnya kurang beruntung jika Anda ingin beberapa menu kustom yang benar. Masalah-masalah ini sudah lama ada di komunitas drupal jadi saya tidak yakin apakah mereka akan diperbaiki dalam waktu dekat. Saya tidak tahu apakah ada beberapa PHP = yang dapat membantu dengan itu. Anda dapat beralih ke beberapa modul alternatif untuk membantu memudahkan fungsionalitas, seperti Menu Attributes dan Menu Block . Keduanya dapat membantu menyiasati cruddy sistem menu di Drupal 7.

25
Steven

Di dalam template.php tema Anda, ini adalah cara untuk melakukan sesuatu di Drupal 6

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

Di Drupal 7 Anda perlu menelepon

  function MYTHME_menu_link(array $variables) {

  }
2
iStryker