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


11

Ben özel bir menü ("mynav" diyelim) oluşturduk ve benim tema özellikle block--menu--menu-mynav.tpl.phpiçeren bir şablon oluşturdum ( ):

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

Bu iyi çalışıyor.

Ancak kimliği oluşturulan ve içerdiği sıralanmamış listeye uygulamayı tercih ederim $content. Sanırım ben MYTHEME_links__system_mynav_menuböyle bir işlev 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?



1
Diğer soru, benzersiz bir menü kimliği eklemekle ilgili, bu soru daha genel.
kiamlaluno

Stackoverflow ile ilgili kesin soru: stackoverflow.com/questions/11935477/…
pençeler

Yanıtlar:


25

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.


Sayıya bakın Sayı # 520106 - Dinamik olarak aktif iz belirlemenin yolu yok
Sorun # 942782 - Özel menüler asla aktif bir iz almıyor

Bazı gerçek özel menüler istiyorsanız, temelde şansınız kalmaz. Bu sorunlar drupal toplulukta çok uzun süredir devam ediyor, bu yüzden yakında herhangi bir zamanda düzeltilip düzeltilmeyeceklerinden emin değilim. Bu konuda yardımcı olabilecek bazı PHP olup olmadığını bilmiyorum. Menü Nitelikleri ve Menü Bloğu gibi işlevlerin rahatlığını kolaylaştırmak için bazı alternatif modüllere dönebilirsiniz . Her ikisi de Drupal 7'deki kıvrımlı menü sistemini aşmanıza yardımcı olabilir.


2

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

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

Drupal 7'de şunu aramanız gerekir:

  function MYTHME_menu_link(array $variables) {

  }

MYTHEME_menu_linkyalnızca bireysel bağlantıları ele alıyor gibi görünüyor. Ben ulaşamıyorum ul.
RoToRa

Ben bakıyorum, artık yapabilir misin bilmiyorum. Drupal 7 ile bağlantılar üzerinde daha fazla gücünüz olduğunu, ancak menüler üzerinde daha az gücün olduğunu biliyorum.
iStryker
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.