Список материалов, относящихся к определенному термину

С помощью этого сниппета можно получить список нод сайта, которые относятся к одному или нескольким определенным в настройках кода терминам.

В сниппете, что приведен ниже нет проверки на статус пользователя(зарегистрированный или «аноним». Если этот вопрос критичен, то следует такую проверку в код добавить.

$tag = 'новость'; // Настраиваем нужный тег. Если нужен вывод материалов по нескольким терминам, то вместо этого кода пишем следующий:
//$tags = "'термин1','термин2','термин3'";

$count = 5; // Максимальное количество выводимых нод.


$result = db_query_range(db_rewrite_sql("SELECT n.nid, n.title
FROM {node} n
INNER JOIN {term_node} tn ON n.nid = tn.nid
INNER JOIN {term_data} td ON tn.tid = td.tid
WHERE td.name = '%s' AND
n.status = 1
ORDER BY n.created DESC"
),$tag,0,$count);

while ($node = db_fetch_object($result)) {
  $items[] = l($node->title, 'node/'. $node->nid);
}
$output = theme('item_list', $items);
print $output;

Dalay

Комментарии

У меня почему то код режет от символа -> Вместо линков выдает строку:
title, 'node/'. $node->nid);
}
$output = theme('item_list', $items);
print $output;
?>

Проверил, все работает. Прицепил к материалу пример работы этого кода, вывод заголовков нод с тегом «Термины».

Смотрите, где с синтаксисом накосячили.

Клёво. А можно это в блок засунуть? Я пробовал в page.tpl, не получается

Естественно в блок.

Скажите, а если есть не название термина (в вашем случае 'новость'), а их номера id в таксономии, то что нужно поменять в вашем коде?

Да просто в условии при запросе к БД поменяйте td.name на td.tid.
Наглядно, меняем:
WHERE td.name = '%s' AND
на:
WHERE td.tid = '%s' AND

Вначале сниппета, соответственно, $tag = 'новость' меняете на $tag = 'ид термина'.

Здравствуйте.
У меня чуть-чуть другая задача и решить не получается.. Как бы вместо вывода списка материалов, вывести так как выводит
стандартная функция вывода страницы термина.

Хотелось бы в теле ноды вывести материалы соответствующие какому-нибудь термину таксономии.
Примерно, также как это бы выглядело при просмотре материалов самого термина: /taxonomy/term/n
Просто в самом термине есть только поле описание, в котором статью форматированного вида не выложишь. А мне бы хотелось сначала чтоб была статья, а потом обзор материалов с анонсами по выбранному термину таксономии.

Или можно по другому.. Как на странице термина в поле описания, выложить статью фоматированного вида (с отсупами между абзацами и т.д.)

Посмотрите, Денис, в сторону Taxonomy Node, о других готовых модулях под ваши надобности мне не ведомо. Ну еще бы посоветовал почитать вот это, возможно чужой опыт натолкнет на интересные идеи.

Прошу прощения, но почему-то по нескольким терминам не получается выводить... :-(((

Скорее всего тут ORDER BY n.created DESC"),$tag,0,$count); вместо $tag надо $tags

Привет, подскажите пожалуйста как данный снип переделать под Drupal 7? а то не могу понять...Спасибо