web-dev-qa-db-ja.com

カスタムナビゲーションメニューのメニューリンクの説明を表示する

page.tpl.phpに表示される次のナビゲーションがあります。

theme('links', array('links' => menu_navigation_links('menu-site-navigation'))); 

表示される4つのナビゲーション要素があります。これらの要素に沿った説明も表示したいのですが、どうすればいいですか?

私のtemplate.phpファイルには次のコードがありますが、この変更をmenu-site-navigationにのみ適用する方法がわかりません

function MYTHEME_link($variables) {
   // if there is a description for the menu item, show it
  if(!empty($variables['options']['attributes']['title'])){
      return '<a href="' . 
      check_plain(url($variables['path'], $variables['options'])) . 
      '"' . drupal_attributes($variables['options']['attributes']) . '>' .
      ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text'])) . 
      '</a><div class="description_nav">' . $variables['options']['attributes']['title'].'</div>';
  }
  else{ 
    return '<a href="' . 
    check_plain(url($variables['path'], $variables['options'])) . '"' .
    drupal_attributes($variables['options']['attributes']) . '>' .
    ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text'])) .
    '</a>';
  }

}

4
kylex

コーディングを必要としない、実行中の代替ソリューションは メニューの説明 モジュールです。これにより、Drupal管理UIを介してメニューのメニュー説明ブロックを作成できます次に、それらのブロックを好きな場所に配置します。

ブロックには、メニューと、それらのメニュー項目に設定された説明が表示されます。

1
rooby

これを実現するのに役立つ2つの点を次に示します。

  1. Page.tpl.phpファイルのtheme_link()関数ではなく、theme_links()を呼び出しているようです。そのため、呼び出しとテーマ関数の実装が一致していることを確認してください。
  2. テーマを設定するときに、他のリンクと区別するために、リンクに追加情報を追加できます。たとえば、以下の「属性」セクションでidの追加になっていることに注意してください。これで、後で、theme_links実装でそれを確認できます

それは役に立ちますか?

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