Superfish メニューを使用しています。メニューリンクの各<span>
タグの前に<a>
タグを追加したいと思いました。私は次のコードを試しました:
function mytheme_menu_link($variables) {
$element = $variables['element'];
$sub_menu = '';
if (empty($element['localized_options'])) {
$element['localized_options'] = array();
}
$element['localized_options']['html'] = TRUE; //let l function know that our link title includes html
$output = l($element['#title'], $element['#href'], $element['#localized_options']);
return '<li' . drupal_attributes($element['#attributes']) . '><span>' . $output . "</span></li>\n";
}
しかし、効果はありませんでした。 Superfishメニューを使用しているので、他のコードを記述する必要がありますか?
Superfishモジュールは通常のDrupalメニューのテーマフックをバイパスし、独自のフックを実装します。これらの周りのHTMLを変更するには、 theme_superfish() 関数をオーバーライドする必要がありますメニュー項目。その関数を superfish.module
をテーマのtemplate.php
ファイル。関数名の「theme
」という単語をテーマのマシン名に置き換えて、編集します。
これは、管理インターフェースを介して簡単に実行できます。 theme_superfish_build() をオーバーライドすることもできますが、そのタスクにはより簡単な解決策があります:
admin/structure/block
に移動し、所定のSuperfishブロックを検索して、[構成]をクリックします。例えば。私のテストDrupalでは、 "Superfish 4"ブロックを編集します(私の場合、パスは次のとおりです:admin/structure/block/manage/superfish/4/configure
):- 「HTMLの詳細設定」までスクロールし、フィールドセットを展開し、「HTMLラッパー」サブフィールドセット、 "ハイパーリンクの周り"というフィールドがあります( "ハイパーリンクのコンテンツの周り")に、次のように入力します。
<span class="this-is-your-span-class">,</span>
ブロックを保存すれば完了です。