2013-02-14 3 views
0

В Drupal, оказывает список таксономических-элементы в шаблоне узла, используяКак применить дополнительный класс к таксономии ul?

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 -tags, так и к ul -tag.

Я сумел добавить класс к каждому Li через в тег theme_preprocess_node:

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

(где $ я содержу индекс Li-элемент).

Однако, я не могу найти подобную процедуру, чтобы добавить класс к UL

Я нашел soultions, связанные с созданием шаблоны-файлов для конкретных полей, или с их участием переопределения функции темы для таксономических элементов ALLtogether. Мне не нравятся эти решения, потому что вовлекайте добавление немного «раздувания» к моей теме. Я хотел бы просто добавить новый элемент в массив и позволить Drupal позаботиться об рендеринге. Наверняка, должно быть возможно добавить ['attributes'] ['class'] = 'my-ul-class в массив?

ответ

0

Вы можете переопределить функцию theme_item_list($variables) тему или реализовать функцию hook_preprocess_HOOK, которая была бы hook_preprocess_item_list($variables) я думаю. Первый сделает ваши изменения в самой теме, второй сделает изменения перед тем, как перейти к нормальной функции темы.

ссылки:

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

+0

Спасибо! Это, несомненно, будет работать, но это также потребует от меня создать список «из skratch». Я ищу «чистое» решение, где я только изменяю значение массива и позволяю Drupal заботиться обо всем остальном. Я просто хотел бы сохранить тему максимально чистой. – Ideogram

+0

Вам просто нужно скопировать и вставить исходную функцию темы и добавить то, что вам нужно. Не нужно ничего делать «с нуля». – 2pha

+0

Я понимаю. Спасибо за Ваш ответ. Это просто не так просто, как просто добавление класса в массив. Я буду отмечать его как «отчужденный», хотя я считаю, что фактический ответ просто ❝_no, это невозможно сделать. – Ideogram