Два словаря. Разделение вывода терминов

Главные вкладки

Аватар пользователя smile smile 6 февраля 2007 в 22:20

Как сейачс модно, в стиле веб 2.0 сделал два словаря для нод.

Словарь 1: Новости, Статьи, Интервью
Словарь второй - под фритаггинг.

Столкнулся с проблемой, что при использовании двух словарей, Друпал по дефолту просто все термины из всех словарей скопом выбрасывает массивом $terms.

Мое решение по разделение выводы двух (и более, чем черт не шутит?) терминов в теле ноды:

В template.php:

function get_node_vid_term_links($node,$vid) {
$links = array();
if (array_key_exists('taxonomy', $node)) {
foreach ($node->taxonomy as $term) {
if ($term->vid == $vid) {
$t_links[] = l($term->name, taxonomy_term_path($term), array('rel' => 'tag', 'title' => strip_tags($term->description)));
}
}
}
$links = theme('links', $t_links);
return $links;
}

В node.tpl.php в нужном месте:

<?php print get_node_vid_term_links($node,1) ?>, где 1- номер словаря.

И сразу же небольшая доработка: в некоторых нодах может не быть терминов во всех связанных словарях. Чтобы в таком случае не выводить пустую строчку написал простенькую проверку:

в node.tpl.php:

<?php
$tags = get_node_vid_term_links($node,2);
if ($tags!=""){
print t('Keywords: ');
print $tags;
}
?>

Может кому-то покажется полезным.

Комментарии

Аватар пользователя seaji seaji 6 февраля 2007 в 22:58

Рекомендую статью поместить в документацию, т.к. подобные вопросы уже мелькали как здесь, так и на drupal.org