Вывод документов помеченных теми же ключевиками

Прислано: Dec0der

пн, 12/01/2009 - 12:33

Другие статьи по теме:

На странице статьи должен выводится блок с похожими материалами.
Вывод статей из того же термина не подойдёт.
Нужна именно такая схема: при создании ноды в какое-то поле вписываешь ключевик. Если есть ещё ноды с таким же ключевиком, то на странице созданной ноды должен выводится список этих статей.
Как это сделать?

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано Nikit в пн, 12/01/2009 - 13:03.

Всё равно термины. Добавь блок, видимый только на просмотре этих материалов. А потом делай код, ищущий и показывающий нужные ноды по термину.


Опубликовано batbug в пн, 12/01/2009 - 14:01.

Модуль Similar terms? Или скорее NodeQueue, да точно.


Опубликовано Goodboy в пн, 12/01/2009 - 19:55.

Может, правильнее ключевик вписывать в словарь таксономии (свободный ввод)?

Для таксономии, есть например такой сниппет (не помню, откуда взял)

<?php
/**
* Сниппет блока для отображения статей с терминами, аналогичными 
* отображаемой статьи. Статьи отсортированы по времени создания.
* Текущая статья из списка удаляется.
*
* Если необходимо не отображать блок при отсутствии статей, надо
* задать $no_items_text = '';
*
*/
 
// номера словарей для поиска терминов
$vids = array(2);
// количество ссылок на статьи
$list_length 5;
// текст при отсутствии найденых статей
$no_items_text ''
 
$tids = array();
 
foreach(
$vids as $vid)
  foreach(
taxonomy_node_get_terms_by_vocabulary(arg(1), $vid) as $tid)
    
$tids[] = $tid->tid;
 
if(!
count($tids))
  return 
$no_items_text;
 
$tids join($tids',');
 
$list_length++;
$query "SELECT DISTINCT(n.nid), n.title, n.created FROM {node} n 
INNER JOIN {term_node} tn ON n.nid = tn.nid 
WHERE tn.tid in (
$tids) AND n.status = 1 
ORDER BY n.created DESC LIMIT 
$list_length";
$sql db_rewrite_sql($query);
$result db_query($sql);
$items = array();
$current_find false;
while (
$item db_fetch_object($result))
  if(
$item->nid == arg(1))
    
$current_find true;    
  else
    
$items[]= l($item->title"node/".$item->nid);
 
if(!
$current_find)
  
array_pop($items);
 
return (
count($items))? theme('item_list',$items) : $no_items_text
?>


Опубликовано Dec0der в вт, 13/01/2009 - 07:32.

словарь таксономии (свободный ввод) это в крайнем случае...
NodeQueue и Similar terms посмотрю...


Новое на сайте

Ссылки партнёров