it-swarm-ko.tech

메뉴 블록을 테마하는 방법?

사용자 정의 메뉴 ( "mynav"라고 함)를 작성했으며 테마에서 다음을 포함하는 템플리트 (block--menu--menu-mynav.tpl.php)를 작성했습니다.

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

이것은 잘 작동합니다.

그러나 ID를 생성하여 $content에 포함 된 정렬되지 않은 목록에 적용하고 싶습니다. 다음과 같이 함수 MYTHEME_links__system_mynav_menu를 만들어야합니다.

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

그러나 영향을 미치지 않는 것 같습니다.

내가 무엇을 잘못하고 있지?

11
RoToRa

정렬되지 않은 목록을 테마로 지정하려면 theme_menu_tree ()를 호출해야합니다. 이것을 호출하기 위해 template.php를 편집 할 수 있습니다.

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

그런 다음 링크 테마를 설정하려면 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";
}

이제 Drupal 7의 문제는 사용자 정의 메뉴의 활성 트레일을 표시 할 때 큰 버그가 있다는 것입니다.

문제 참조
문제 # 520106-동적 흔적을 동적으로 설정할 방법이 없음
문제 # 942782-사용자 지정 메뉴에 활성 흔적이 수신되지 않음

진정한 커스텀 메뉴를 원한다면 기본적으로 불운합니다. 이 문제는 drupal 커뮤니티에서 매우 오래 지속되어 빨리 해결 될지 확실하지 않습니다. 일부 PHP 메뉴 속성메뉴 블록 과 같이 기능적으로 편리하게 사용하기 위해 대체 모듈로 전환 할 수 있습니다. 메뉴 시스템 Drupal 7.

25
Steven

테마의 template.php 내부에서 이것은 Drupal 6

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

Drupal 7에서 전화해야합니다.

  function MYTHME_menu_link(array $variables) {

  }
2
iStryker