it-swarm-ko.tech

메뉴에 고유 메뉴 ID를 어떻게 추가합니까?

Drupal 7을 사용하고 특정 메뉴에 고유 ID를 추가하고 싶습니다. 검색 결과에 메뉴 항목을 변경하는 방법이 있지만 메뉴 자체를 변경하고 싶습니다. 그렇게 할 수있는 방법이 있습니까?

2
mohamad salama

빠르고 더러운 방법 :

테마 디렉토리로 이동하여 page.tpl.php를여십시오. Zen 기반 테마를 사용하고 있으며 보조 메뉴를 인쇄하는 다음 코드가 있습니다.

     <?php print theme('links__system_secondary_menu', array(
       'links' => $secondary_menu,
       'attributes' => array(
       'id' => 'secondary-menu',
       'class' => array('links', 'clearfix'),
      ),
      'heading' => array(
        'text' => $secondary_menu_heading,
        'level' => 'h2',
        'class' => array('element-invisible'),
      ),
    )); ?>

간단하게 편집 할 수 있습니다 (수정 된 줄에는 별표가 있습니다).

     <?php print theme('links__system_secondary_menu', array(
       'links' => $secondary_menu,
       'attributes' => array(
       ***'id' => array('secondary-menu', 'my-new-id'),***
       'class' => array('links', 'clearfix'),
      ),
      'heading' => array(
        'text' => $secondary_menu_heading,
        'level' => 'h2',
        'class' => array('element-invisible'),
      ),
    )); ?>

편집 :

다차원 메뉴와 언어에 문제가 있다고 말할 때 실제로 이해가되지 않지만 더 많은 제어가 필요한 경우 theme_menu_tree를 사용하지 마십시오. 테마의 template.tpl.php에서 다음과 같이 재정의하십시오.

function my_theme_name_menu_tree($variables) {
  if ($variables['some_condition_you_care_about'])
    return '<ul class="menu" id="my_custom_id">' . $variables['tree'] . '</ul>';
  else
    return '<ul class="menu">' . $variables['tree'] . '</ul>';
}
0
Frederik

대체 솔루션으로 메뉴 블록 모듈 을 사용하는 것이 좋습니다. 사용자 정의 깊이 범위, ​​시작 항목 등을 사용하여 특정 메뉴에 대한 블록을 만드는 데 사용합니다.

제어 기능이 마음에 들어서 사이트의 모든 메뉴에이 메뉴를 사용하고 추가 보너스로 각 메뉴에 고유 한 ID를 추가합니다.

1
electblake

attributes module 메뉴를 사용하여 Drupal의 모든 메뉴 항목에 사용자 정의 클래스, 아이디, 이름 등을 추가 할 수 있습니다. Drupal의 메뉴 시스템을 변경하여 사용자 정의 모양을 만들 때 매우 편리한 모듈입니다.

1
Jepedo

정렬되지 않은 목록을 테마로 지정하려면 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.

0
Steven