次のように表示されるセカンダリメニューがあります。
_<ul class="secondarynav">
<li class="menu-428 first">
<a href="/content/page">PAGE</a>
</li>
...
_
これを変更して、次のようなリンクに_<span>
_を表示します。
_<ul class="secondarynav">
<li class="menu-428 first">
<a href="/content/page"><span>PAGE</span></a>
</li>
...
_
Drupal 7 theme_menu_linkのドキュメント と theming Drupal 7メニューリンク に関するこの回答)によると、フックを次のように宣言できるはずです。 THEMENAME_menu_link__MENUNAME($variables)
。
_template.php
_で次の2つの関数を宣言しましたが、どちらも呼び出されていません。
_function MYTEMPLATE_menu_link__system_secondary_menu(array $variables) {die;}
function MYTEMPLATE_menu_link__secondary_menu(array $variables) {die;}
_
私はフレームワークを使用しており、次のようなセクションがあります。
_if (isset($vars['secondary_menu'])) {
$vars['secondary_menu'] = theme('links__system_secondary_menu', array(
'links' => $vars['secondary_menu'],
'attributes' => array(
'class' => array('secondaryNavigation'),
)
));
}
_
このメニューのみのメニューリンクで余分な_<span>
_を印刷する最もクリーンでベストな方法は何ですか?
function MYTEMPLATE_links__system_secondary_menu(array $variables)
を使用してメニュー全体を一度にテーマ化する関数を書くことができますが、各リンクで_<span>
_を取得するためだけにメニュー全体をテーマ化することはやり過ぎのようです。
theme('links__system_secondary_menu')
を呼び出します。デフォルトでは、_theme_links__system_secondary_menu
_がないので、 theme_links を呼び出していると思います。関数を見ると、_THEMENAME_links__system_secondary_menu
_としてテーマにコピーし、 l() の呼び出しを次のように変更するだけです。
_$link['html'] = TRUE;
$output .= l('<span class="whatever">' . $link['title'] . '</span>', $link['href'], $link);
_
_html => true
_は必須です。そうでない場合、l()
は最初のパラメーターからhtmlを取り除きます。
カスタムメニュー(ユーザーが作成したもの)の場合、MENUNAMEはダッシュ(アンダースコアに変換されたメニュー編集ページにアクセスして取得可能)のマシン名です。したがって、「Secondary Menu」と呼ばれるメニューの場合、マシン名は「secondary_menu」に変換され、「secondary_menu」に変換されます(必ず確認してください)。したがって、THEMENAME_menu_link__secondary_menu(array $ variables)を実装する必要があります。