Мы создали материал (ноду). Нода размещена в определенном словаре (у которого есть свои категории). И по умолчанию в Друпал, при публикации материала название словаря не отражается. Например, у нас есть словарь "Бренды", в нем категории "Yamaha", "Honda", "Suzuki". При размещении статьи категории отобразятся без указания словаря "Бренды", одной строчкой. Если у вас несколько словарей относится к ноде, то всё это будет смешано в одну строку.
Пример:
Сайт автомобильной тематики, где каждая страница (нода) - это описание конкретной марки автомобиля.
Чтобы по смыслу связать между собой страницы сайта, мы используем термины в нескольких словарях.
Словари (термины):
- Марка автомобиля (мерседес, опель, запорожец и т.д.)
- Объем двигателя [л] (менее 0,5; 0,5-1; 1-1,5 ... 6 и более)
- Тип двигателя (бензин, дизель)
- Потребление топлива [л/100км] (до 6, 6-10, 10-14, более 14)
...автолюбитель, чтобы подробно систематизировать каждую марку автомобиля, таких словарей может понапридумывать огромное количество.
В итоге мы получаем страницу следующего вида:
Заголовок - Мерседес 320SL
Текст - Описание модели
Термины: мерседес, 4-6, бензин, более 14, и т.д. и т.п.
Уже в этих терминах можно немного запутаться, а если словарей будет еще больше и они будут содержать специфическую информацию?..
Чтобы все стало красиво и понятно, нам нужно отобразить названия словарей, из которых берутся соотв. категории.
Заголовок - Мерседес 320SL
Текст - Описание модели
Марка автомобиля: мерседес, Объем двигателя: 4-6, Тип двигателя: бензин, Потребление топлива: более 14, ...
Как показать названия словарей в ноде:
Вставьте в template.php вашей темы следующий код:
ВНИМАНИЕ! Замените yourthemename на имя вашей темы, например, есть тема "garland".
<?php
// split out taxonomy terms by vocabulary
function yourthemename_print_terms($nid) {
$vocabularies = taxonomy_get_vocabularies();
$output = '
';
foreach($vocabularies as $vocabulary) {
if ($vocabularies) {
$terms = taxonomy_node_get_terms_by_vocabulary($nid, $vocabulary->vid);
if ($terms) {
$links = array();
$output .= '