Стоит задача разделять записи в блогах на категории (при создании записи выбирается один возможный вариант из словаря). В то же время хочется, что бы к записи можно было добавить список тегов.
Создаю два словаря: первый с категориями, другой для пользовательских тегов.
Но в шаблон node.inc.php они все идут одним списком (пример в продолжении поста)
Собственно вопрос: как разделить эти два словаря, что бы можно было отличать их в файле шаблона?
Array
(
[taxonomy_term_1] => Array
(
[title] => Категория
[href] => taxonomy/term/1
[attributes] => Array
(
[rel] => tag
[title] =>
)
)
[taxonomy_term_7] => Array
(
[title] => тег 1
[href] => taxonomy/term/7
[attributes] => Array
(
[rel] => tag
[title] =>
)
)
[taxonomy_term_6] => Array
(
[title] => тег 2
[href] => taxonomy/term/6
[attributes] => Array
(
[rel] => tag
[title] =>
)
)
Комментарии
вместо вывода $terms сделать собственное форматирование терминов из $node->taxonomy. Или прямо в node.tpl.php или template.php/_phpteamplate_variables.
$node->taxonomy - это тот же массив, что и $taxonomy.
как определить какой термин из какого словаря?
сейчас попробую реализовать категории на og, но, конечно, это не совсем то, что мне нудно :(. хочется попроще :).
в моем примере обязательный термин из словаря "категории" идет первым в массиве. не проверял, но похоже это зависит от порядкового номера словаря.
собственно, сделал следующее:
теперь у меня два массива: в $category хранится категория, в $taxanomy остальные термины из списка "теги".
ПС: Ужаснулся от размеров OG %).
Если выбор категории не принудительный, то добавляем проверку - выбрана категория или нет. Для этого используем функцию taxonomy_node_get_terms_by_vocabulary()
$category=array_shift($taxonomy);
}
Эта функция выводит термины из конкретного словаря (в моем случае vid 2) для данной записи ($nid).
Ну раз уж начал тему, то выдам все "тайны" :).
Формируем ссылки
<?php
//+++++++++ Taxonomy cut ++++++++++++
if(taxonomy_node_get_terms_by_vocabulary($nid, 2, $key = 'tid'))
$category=array_shift($taxonomy);
//+++++++++ Tag links +++++++++++++++
foreach($taxonomy as $aa=>$bb){
if($i)$tag_links.=", ";
$tag_links.=l($bb[title], $bb[href], array('class'=>'smalltags'));
$i++;
}
//+++++++++ Category link +++++++++++
if($category)
$category=l($category[title], $category[href], array('class'=>'blog_name'));
?>
$tag_links - ссылки на теги, разделенные запятой с CSS классом 'smalltags'
$category - ссылка на категорию с классом 'blog_name'