カスタムメニューの特定のメニューリンクにスパンタグを追加する方法を理解しようとしています。カスタムメニューリンク内の1つのリンクでのみ必要です。前処理関数を推測してtheme_menu_item_link()
運が悪かったのですが、呼び出されているようには見えませんでした。
3649 次
2 に答える
6
以下の解決策を見つけてください。
Superfishモジュールを使用theme_menu_link()
している場合、この場合は機能しないことに注意してくださいtheme_superfish_menu_item_link
。代わりに使用してください。
Drupal 7
/*
* Implements theme_menu_link().
*/
function THEME_menu_link(array $variables) {
$element = $variables['element'];
$sub_menu = '';
if ($element['#below']) {
$sub_menu = drupal_render($element['#below']);
}
$element['#localized_options']['html'] = TRUE;
$linktext = '<span class="tab-inner">' . $element['#title'] . '</span>';
$output = l($linktext, $element['#href'], $element['#localized_options']);
return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}
Drupal 7 (Superfish を使用)
/*
* Implements theme_superfish_menu_item_link().
* Theme a superfish menu item link,
* to override menu item to insert span tags
*/
function THEME_superfish_menu_item_link(array $variables) {
$menu_item = $variables['menu_item'];
$link_options = $variables['link_options'] + array('html' => TRUE);
$linktext = '<span class="tab-inner">' . $menu_item['link']['title'] . '</span>';
return l($linktext, $menu_item['link']['link_path'], $link_options);
}
上記のフックを定義したら、キャッシュをクリアしてテーマ レジストリを再構築します。
@weaveoftherideの提案に従って上記が機能しない場合は、設定で [ハイパーリンクにテーマ関数を使用する] と [メニュー項目にテーマ関数を使用する]を有効にしてください。通常、これらはデフォルトで有効にする必要があります。
Drupal 6 (参考までに)
/*
* Implements theme_menu_item_link().
*/
function THEME_menu_item_link($link) {
if (empty($link['localized_options'])) {
$link['localized_options'] = array();
}
$link['localized_options'] += array('html'=>true);
return l('<span>'.$link['title'].'</span>', $link['href'], $link['localized_options']);
}
THEME
注:上記のすべてのコードで、テーマのマシン名に置き換えることを忘れないでください。
于 2014-03-12T11:20:02.077 に答える
1
答えが見つかりました!使用する必要がありますtheme_menu_link()
:
function theme_menu_link(array $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";
}
http://api.drupal.org/api/drupal/includes%21menu.inc/function/theme_menu_link/7
そこで探しているアイテムを見つけて、それに応じて調整することができます。
于 2012-11-20T17:09:04.727 に答える