私はこの質問のバリエーションを検索して見つけましたが、うまくいくように見える答えを見つけたことがありません。 <li>
要素にクラスを追加する必要があります。現在、メインメニューは次のようにレンダリングされています。
print theme('links__system_main_menu', array(
'links' => $main_menu,
'attributes' => array(
'id' => 'slidemenu',
'class' => array(
'links',
'inline',
'clearfix'
)
),
'heading' => t('')
));
私の知る限り、これはメインメニューの<ul>
要素のみを設定するので、'links'
パーツの属性を編集する方法があるかどうか疑問に思っていました。
---編集---
わかった、解決したと思う。どうやら、テンプレートでtheme_links__system_main_menu
を使用して全体を上書きできます。私はこれをやった:
function mytheme_links__system_main_menu($variables) {
$html = '<div id="mainmenu">';
$html .= ' <ul id="slidemenu" class="clearfix">';
static $linkClass = 1;
foreach ($variables['links'] as $link) {
$html .= '<li class="themastyle' . $linkClass . '">' . l($link['title'], $link['href'], $link) . '</li>';
++$linkClass;
}
$html .= ' </ul>';
$html .= '</div>';
return $html;
}
これが正しいDrupalかどうかは完全にはわかりませんが、問題は解決しました!
print_r($main_menu);
各$main_menu
アイテムは、次の構造を持つ必要があります。
array(
'title' => 'xxx',
'href' => 'xxx',
'attributes' => array(
'class' => array('xxx'),
),
);
そのため、$main_menu
配列を変更して、liにクラスを追加できます。
メニュー属性 は、class
、id
、rel
およびその他の属性をa
に設定できるもう1つの優れたモジュールですまたはli
要素。
既存のモジュールを使用しても構わない場合は、 メニュー名CSS を使用することもできます。このモジュールは、メニュー項目のターゲットパスをサニタイズされたcssクラスとしてli-itemに追加します。
2番目の利点は、コードの再利用性を高めるために、モジュールがテンプレートでなく、モジュールに機能を配置する優れたテンプレートであることです。