web-gelistirme-sc.com

Bir menü bloğu teması nasıl yapılır?

Özel bir menü ("mynav" diyelim) oluşturduk ve benim tema özellikle içeren bir şablon (block--menu--menu-mynav.tpl.php) Oluşturduk:

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

Bu iyi çalışıyor.

Ancak kimliği oluşturulan ve $content İçindeki sıralanmamış listeye uygulamayı tercih ederim. Sanırım ben böyle bir işlev MYTHEME_links__system_mynav_menu Oluşturmak gerekir:

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

ama bir etkisi yok gibi görünüyor.

Neyi yanlış yapıyorum?

11
RoToRa

Sıralanmamış listenin temasını oluşturmak için theme_menu_tree () öğesini çağırmanız gerekir. Bunu aramak için template.php dosyanızı düzenleyebilirsiniz.

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

Ardından, bağlantılarınızın temasını yapmak istiyorsanız theme_menu_link () öğesini arayın.

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";
}

Şimdi, Drupal 7 ile ilgili sorun, özel menülerin aktif izini görüntüleme konusunda büyük bir hata olmasıdır.

Soruna bakın
Sayı # 520106 - Dinamik olarak aktif iz belirlemenin yolu yok
Sayı # 942782 - Özel menüler asla aktif bir iz almaz

Bazı gerçek özel menüler istiyorsanız, temelde şansınız kalmaz. Bu sorunlar drupal topluluk içinde çok uzun zamandır bu yüzden yakında düzeltilip düzeltilmeyeceklerinden emin değilim. Bazı PHP İşlevselliği kolaylaştırmak için Menü Öznitelikleri ve Menü Bloğ gibi bazı alternatif modüllere başvurabilirsiniz. menü sistemi Drupal 7.

25
Steven

Temanızın template.php içinde Drupal 6 içinde bir şeyler yapmanın yolu buydu)

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

Drupal 7 numaralı telefondan aramanız gerekir

  function MYTHME_menu_link(array $variables) {

  }
2
iStryker