На сайте есть несколько словарей таксономии (Например, "Исполнитель", "Альбом", "Год").
Нужно вывести теги каждого словаря отдельно так:
- Исполнитель: тег1, тег2, тег3
- Альбом: тег1, тег2,
- Год: тег1, тег2,
По умолчанию Друпал выводит все теги документа вместе и не разделяет на словари. Чтобы это изменить нужно внести изменения в шаблон документа.
Решение:
Изменения вносятся в файлах node.tpl.php и остальных файлах node-*.tpl.php, если это необходимо. Эти файлы находятся в папке текущей темы сайта.
Найти этот код (обычно в начале файла):
Заменить на:
В файле template.php:
* Override or insert variables into the node templates.
*
* @param $vars
* An array of variables to pass to the theme template.
* @param $hook
* The name of the template being rendered ("node" in this case.)
*/
function THEMENAME_preprocess_node(&$vars, $hook) {
if ($hook=='node') {
$sql = "SELECT v.vid, v.name as voc_name, td.tid, td.name AS tag_name
FROM {vocabulary} AS v
INNER JOIN {term_data} AS td USING (vid)
INNER JOIN {term_node} AS tn USING (tid)
INNER JOIN {node} AS n USING (nid)
WHERE n.nid=%d
GROUP BY td.tid
ORDER BY v.vid";
$result = db_query(db_rewrite_sql($sql), $vars['nid']);
$categories=array();
while ($category=db_fetch_object($result)) {
$voc[$category->name]=$category->vid;
$categories[$category->name] .= '<li class="taxonomy_term_'.$category->tid.'">'. l($category->tname , 'taxonomy/term/'. $category->tid, array('rel'=>'tag', 'title'=>'', 'class'=>'taxonomy_term_'.$category->tid)). ', </li>';
}
if (count($categories)>0) {
foreach ($categories as $cat_name=>$cat_terms) {
$vars['terms_by_vocabulary'].='<div class="vocabularies voc_'.$voc[$cat_name].'">'.$cat_name.': <ul class="links inline">'.$cat_terms.'</ul></div>';
}
}
}
}
Темизация
Вывод терминов (тегов) горизонтально и вертикально
Вывод в одну строку (горизонтально) обеспечивается CSS-правилом из system-menus.css (строка 39):
Чтобы вывести вертикальный список, нужно добавить в конец файла style.css правило:
Темизация отдельного термина
Для каждого термина формируется своё название класса и можно настроить каждый тег отдельно. Можно, например, добавить значок тега, поменять цвет, размер, шрифт, положение и прочее, что позволяет CSS.
Например для тега:
<a href="/avtory-reshenii/vladsavitsky">VladSavitsky</a>
</li>
Нужно использовать CSS-правило:
Темизация отдельного словаря
Словарь обёрнут тегами и есть класс, который привязан к ID словаря:
Поэтому можно изменить вид каждого отдельного словаря:










