0

Drupal では、次を使用して、ノード テンプレート内の分類項目のリストをレンダリングします。

print render($content['field_my_taxonomy']);

次のようなリストが表示されます。

<ul class="links">
  <li class="taxonomy-term-reference-0">
       <a property="rdfs:label skos:prefLabel" typeof="skos:Concept" href="somewhere">
         Tomaten
       </a>
   </li>
   (...)

ここまでは順調ですね。ここで、独自のクラスのいくつかをliタグとulタグの両方に適用したいと思います。

theme_preprocess_node を使用して、各liタグにクラスを追加することができました。

$vars['content']['field_my_taxonomy'][$i]['#options']['attributes']['class'] = "my-li-class";

(ここで、$i には li-item のインデックスが含まれます)。

ただし、クラスをULに追加する同様の手順が見つかりません

特定のフィールドのテンプレート ファイルを作成することや、分類項目のテーマ関数をまとめてオーバーライドすることを含む解決策を見つけました。テーマにかなりの「膨張」を追加する必要があるため、これらのソリューションは好きではありません。配列に新しいアイテムを追加して、Drupal にレンダリングを任せたいだけです。確かに、 ['attributes']['class']='my-ul-classをどこかの配列に追加できるはず ですか?

4

1 に答える 1

0

theme_item_list($variables)テーマ関数をオーバーライドする、hook_preprocess_HOOK 関数を実装することができますhook_preprocess_item_list($variables)。1 つ目はテーマ自体の変更を行い、2 つ目は通常のテーマ機能に進む前に変更を行います。

リンク:

http://api.drupal.org/api/drupal/includes!theme.inc/function/theme_item_list/7

http://api.drupal.org/api/drupal/modules!system!theme.api.php/function/hook_preprocess_HOOK/7

于 2013-02-15T09:38:56.147 に答える