0

drupal 内でカスタム メニューのスタイルを設定しようとしています。

背景画像を表示するスタイルは成功しましたが、問題はメニュー項目のタイトルがまだ表示されていることです。だから私は素敵なイメージを手に入れました。

カスタム メニューの書式を設定し、ハイパーリンクからテキスト部分を削除するために使用できるテンプレート関数はありますか?

私はプライマリ リンク (以下を参照) で同様のことを行いましたが、カスタム メニューでそれを行う方法を理解する助けがあればできます。

function primary_links_add_icons() {
  $links = menu_primary_links();
  $level_tmp = explode('-', key($links));
  $level = $level_tmp[0];
  $output = "<ul class=\"links-$level\">\n";   
  if ($links) {
    foreach ($links as $link) {
        $link = l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment']);
        $cssid = str_replace(' ', '_', strip_tags($link));
        $link = preg_replace('#(<a.*?>).*?(</a>)#', '$1$2', $link);
        $output .= '<li id="'.$cssid.'">' . $link .'</li>';
    };
    $output .= '</ul>';
  }
  return $output;
}

そして、これは page.tpl.php 内で呼び出されます

print primary_links_add_icons();

助けてくれてありがとう!

4

1 に答える 1

1

theme_menu_treeこれを自分で解決する方法template.phpです。関数の内容は、上記の関数と同じです。ドキュメントはhttp://api.drupal.org/api/function/theme_menu_treeにあります

ただし、何をしているのかには CSS を使用することをお勧めします。テキストが (php を介して) 完全に削除された場合、画像と CSS を適切に表示し、ナビゲーションを可能にするために、ユーザーのブラウザーに依存することになります。

画像とテキストの両方を含めることを検討するかもしれませんが、display: noneCSS が適切にロードされていない場合にテキスト部分をより適切に劣化させるようにします。

于 2009-09-04T11:58:55.823 に答える