Всем привет, народ, прошу вашей помощи. есть сниппет (попробовал собрать из кусков, которые нашёл в инете, в похожих темах). Есть термин с id 12, есть отдельная страница(созданная через файл node--14.tpl). При создание материала можно выбрать соответствующий термин. Собственно, что должен делать код: выводить анонс данного материала на странице node--14, термин которого должен = 12
В друпале на стадии "Учусь", "практикуюсь", не бейте если что)
<?php
$sql_query = db_select('node', 'n');
$sql_query->fields('n', array('nid', 'title'));
$sql_query->leftJoin('taxonomy_index', 'ti', 'n.nid = ti.nid');
$sql_query->condition('n.type', $variables['type']);
$sql_query->condition('n.status', NODE_PUBLISHED);
$sql_query->condition('ti.tid', 12, 'IN');
$sql_query->condition('n.nid', $variables['nid'], '<>');
$sql_query->groupBy('n.nid');
$sql_query->orderBy('n.created', 'DESC');
$sql_query->range(0, 5);
foreach ($sql_query as $row) {
print drupal_render(node_view(node_load($row->nid),'teaser'));
}
?>
Ошибок никаких не выдаёт, но и результат не показывает( не получается ничего предпринять чтобы дало результат...
Комментарии
Нифига не понятно написал. Давай по новой.
Тебе надо чтобы в ноде выводились тизеры нод с теми же терминами таксономии. Или другая логика? Опиши.
http://xandeadx.ru/blog/drupal/234
2 ttenz, это чуть не то, в вашем варианте выводит 3 ссылки похожих материала в открытой ноде
2 whiesam, давай по новой) смотри. Возьмем такой пример, имеется поле при создание материала, например, разработчик (выборка из списка словаря; видно только при создание материала; во фронтенде не показывается, так что нажать на него нельзя...), есть анонс этого материала, есть страница на которой, через сниппет, надо вывести эти анонсы материалов основываясь на определенном термине из словаря. Сниппет вверху)
А нафига тогда код городить? Обычной views хватит.
то что можно через views сделать я понимаю, но ставить в систему модуль который весит не мало, ради такой маленькой штучки - думаю это не выход
В вашем случае друпал не выход.
2 Lotar, why?
я думаю, что вывести анонсы материала по определенному термину для друпала это не проблема, просто я не могу понять как(
Вам же объяснили, если не умеете программить используйте drupal way. То есть то что уже создано до(для) вас. Модуль views берем и не паримся.
откуда взята переменная $variables?
зачем в данном запросе группировка и зачем использовать оператор IN ?
что нужно сделать я так и не понял - выводить внутри шаблона ноды тизеры на ноды, которые ссылаются на определенный термин?
2 drupby, да
$query->fields('n', array('nid'));
$query->join('taxonomy_index', 'ti', 'n.nid = ti.nid');
$query->condition('n.type', $node->type);
$query->condition('n.status', NODE_PUBLISHED);
$query->condition('ti.tid', 12);
$query->condition('n.nid', $node->nid, '<>');
$query->orderBy('n.created', 'DESC');
$query->range(0, 5);
$result = $query->execute();
foreach ($result as $row) {
print drupal_render(node_view(node_load($row->nid),'teaser'));
}
но только такие сниппеты не для вставки в шаблон
сенк, теперь работает
А скажи плз почему этот снипп на для вставки в шаблон? что ему не хватает?
потому что в шаблонах выводятся только уже сформированные переменные, а такая логика либо выносится в препроцесс, либо формируется и выводится в блоке
всем спасибо! drupby, А ТЕБЕ ОГРОМНЕЙШЕЕ СПАСИБО