< span>を追加していますDrupalの各主要アイテムの周りのタグ

StackOverflow https://stackoverflow.com/questions/1201558

  •  05-07-2019
  •  | 
  •  

質問

Drupalのプライマリリンクをコードで次のように表示したい:

<a class="active" title="Go to the Foo Homepage" href="/"><span>Home</span></a>

ではなく:

<a class="active" title="Go to the Foo Homepage" href="/">Home</a>

したがって、 a とは別に span のスタイルを設定できます。

(やや奇妙なことに聞こえるかもしれませんが、2つの背景画像を設定できないことと相まって、IEの境界半径サポートの欠如を回避することに関係しています。)

だから、どこで&amp; Drupalにこれらのタグをすべてのプライマリリンクに挿入させる方法

役に立ちましたか?

解決

page.tpl.php のどこかに、プライマリメニューを表示する次のようなものがあると思います:

print theme('links', $primary_links, array('class' => 'links primary-links'));

1つの解決策(最もクリーンなものではないかもしれませんが、動作するはずです)は、 $ primary_links の要素を繰り返し処理することです:

  • HTMLモードを有効にする
  • &lt; span&gt; &lt; / span&gt;
  • title をラップします

メニューのレベルが1つしかない場合、これはそうなると思います:

foreach ($primary_links as & $link) {
  $link['html'] = true;
  $link['title'] = '<span>' . $link['title'] . '</span>';
}

そして、その後、すでにやっているように theme を呼び出すことができます。

それにより、&lt; span&gt; タグをリンクのテキストの周りに取得し、 title の属性に挿入する必要はありません。 &lt; a&gt; タグ。


メニューに複数のレベルがある場合、さらに下に反復する必要があります。 2つの重なり合ったループを使用するか、メニューの深さがわからない場合は何らかの再帰を使用します。
(それを楽しんでみましょう。私が言ったことはあなたを始めるのに十分なはずです;-))


補足として、これはおそらく template.php のどこかで行うことができます...より良い場所かもしれません。しかし、私はあなたがどちらの解決策を好むか決めることができます...


楽しんでください!

他のヒント

これは、 http://drupal.org/node/221382

に役立つはずです。

最終的な解決策については、このコメントまで下にスクロールしてください http://drupal.org/node/ 221382#comment-755469 。 html出力に問題があり、そこで解決されています。

記録のために、最後に menu_htmlモジュールを使用し、メニュー項目を次のように入力しました。関連するダイアログの&lt; span&gt;メニュー項目1&lt; / span&gt;

実際には、展開されて既に背景画像があったため、そのうちの1つで&lt; span&gt;&lt; span&gt; Menu Item Expanded&lt; / span&gt;&lt; / span&gt; になりましたセット。現在3つあります!

少なくともタブの曲線コーナーはIEで動作します。 IEがCSSを適切にサポートしていないという理由だけで、IEが5/6時間浸るのはもう1回です!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top