Искала возможность вывести похожие материалы к статье и встречала разные модули и настройки к ним. В частности поставила Views, но не подружилась с ним, т.к. по мануалу все настроила, 3 ссылки на статьи получила, но они были везде одинаковые. Может у меня руки не правильно приделаны)
Но вот нашла вполне подходящий и легкий способ. С помощью сниппета
В файл template.php вашей темы нужно вставить этот код:
Но вот нашла вполне подходящий и легкий способ. С помощью сниппета
В файл template.php вашей темы нужно вставить этот код:
function [THEMENAME]_preprocess_node(&$vars) { if (!$vars['page'] || !$vars['node'] || !isset($vars['field_tags']) || !count($vars['field_tags'])) { return; } $tids = array(); foreach ($vars['field_tags'] as $tag) { $tids[] = $tag['tid']; } $query = db_select('node', 'n'); $query->fields('n', array('nid', 'title')); $query->addExpression('COUNT(*)', 'hits'); $query->leftJoin('taxonomy_index', 'ti', 'n.nid = ti.nid'); $query->condition('n.type', $vars['type']); $query->condition('n.status', NODE_PUBLISHED); $query->condition('ti.tid', $tids, 'IN'); $query->condition('n.nid', $vars['nid'], '<>'); $query->groupBy('n.nid'); $query->orderBy('hits', 'DESC'); $query->orderBy('n.created', 'DESC'); $query->range(0, 3); $vars['content']['similar'] = node_title_list($query->execute(), 'Похожие материалы'); $vars['content']['similar']['#weight'] = 2; }
При этом [THEMENAME] нужно заменить на название вашей темы, а field_tags на ваш словарь таксономии.
И еще у меня в этом файле уже был кусок кода с function [THEMENAME]_preprocess_node(&$vars) и чтобы не вышло ошибок и пустого листа нужно вставить дополнение после окончания того куска. И удалить закрывающую скобку того куска и у вставляемого удалить function [THEMENAME]_preprocess_node(&$vars) {
Надеюсь понятно)
Комментариев нет:
Отправить комментарий