Показ схожих информационных элементов на основе меток

Модератор
#
Показ схожих информационных элементов на основе меток
Для отображения схожих информационных элементов, т.е. элементов имеющих одинаковые одну или более меток используйте следующий код

<?php
/* $item_id содержит идентификатор информационного элемента, для которого необходимо получить схожие
*/
$oTag = & singleton('Tag');
   
// Получаем массив тегов информационного элемента
$mas_tags  = $oTag->GetTagRelation(array('information_items_id' => $item_id));
   
if (is_array($mas_tags) && count($mas_tags) > 0)
{
   $property = array();

   foreach($mas_tags as $key => $tag_row)
   {
      $property['tags'][] = $tag_row['tag_id'];
   }

   $property['Order'] = 'DESC';
   $property['OrderField'] ='information_items_date';
      
   // Исключаем из списка схожих материалов текущий элемент
   $element['type'] = 0;
   $element['name'] = 'information_items_table.information_items_id';
   $element['prefix'] = ' AND ';
   $element['if'] = '!=';
   $element['value'] = $item_id;
   $element['sufix']=" ";
   $property['select'][] = $element;

   $external_propertys = array();

   $GLOBALS['LA_InformationSystem']->ShowInformationSystem($InformationSystem_id, false, 'СписокЭлементовИнфосистемы', 10, 0, $external_propertys, $property);
}
?>


вариант для шестой версии http://www.hostcms.ru/forums/3/8463/
#
Re: Показ схожих информационных элементов на основе меток
спасибо огромное.
Модератор
#
Re: Показ схожих информационных элементов на основе меток
Пожалуйста
#
Re: Показ схожих информационных элементов на основе меток
Забили скобку } в конце. Спасибо!
Еще нужно добавить проверку на количество совпадающих тэгов. Введите такой параметр плиз. Нужно чтобы выводило при 2 и более совпадений, к примеру.

Можно еще то же самое для магазина сделать и для ИС<-->Магазин ?
http://www.aiventa.ru
Модератор
#
Re: Показ схожих информационных элементов на основе меток
hell0men писал(а):
Забили скобку } в конце. Спасибо!

Спасибо, поправил.

hell0men писал(а):
Можно еще то же самое для магазина сделать и для ИС<&#8594;Магазин?

Почему бы нет, те же метки, тот же принцип.
#
Re: Показ схожих информационных элементов на основе меток
Можно как-то их сортировать по количеству совпадений?
http://www.aiventa.ru
Модератор
#
Re: Показ схожих информационных элементов на основе меток
hell0men,
маловероятно, выбирается ИЭ с вхождением хотя бы одной метки из списка.
#
Re: Показ схожих информационных элементов на основе меток
Перебрать массив со счетчиком, сделать сортировку по счетчику. Не знаю только как
http://www.aiventa.ru
#
Re: Показ схожих информационных элементов на основе меток
C вашим кодом на страницах категорий (не записей):
Только что на сайте произошло событие, информация о котором представлена ниже:
Дата: 03.09.2009 14:02:20
Событие: Ошибка выполнения запроса: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY information_items_date DESC
                                                       LIMIT 0, 3' at line 18. Запрос: SELECT SQL_CALC_FOUND_ROWS DISTINCT information_items_table.information_items_id
                                                       FROM information_items_table
                                                       LEFT JOIN information_groups_table
                                                               ON information_items_table.information_groups_id = information_groups_table.information_groups_id
                                                               AND information_groups_table.information_groups_access IN (0,-1)
                                                               LEFT JOIN tags_relation_table
                                                       ON information_items_table.information_items_id = tags_relation_table.information_items_id

                                                               WHERE 1  AND information_items_table.information_systems_id = '5'
                                                                AND information_items_table.information_items_status = '1'
                                                       AND (information_items_table.information_items_putend_date >= '2009-09-03 14:02:20'
                                                       OR information_items_table.information_items_putend_date ='0000-00-00 00:00:00')
                                                       AND information_items_table.information_items_putoff_date <= '2009-09-03 14:02:20'

                                                                AND tags_relation_table.tag_id IN (141, 142, 146, 147, 131, 125, 136, 121, 138, 137, 135, 122, 134, 133, 124, 53, 139, 106, 140, 123, 132, 148, 143, 145, 144, 110, 152, 154, 153, 155, 149, 150, 151, 156, 161, 105, 160, 120, 159, 162, 163, 164, 165)
                                                       AND information_items_table.information_items_access IN (0,-1)

                                                           AND  information_items_table.information_items_id!=    ORDER BY information_items_date DESC
                                                       LIMIT 0, 3
Статус события: Наивысший уровень критичности
Пользователь: SYSTEM
http://www.aiventa.ru
Модератор
#
Re: Показ схожих информационных элементов на основе меток
hell0men,
а $item_id определили???
Авторизация