Выдано 135494 лицензии

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

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

<?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: Показ схожих информационных элементов на основе меток
#
Eklmn
55
спасибо огромное.
Re: Показ схожих информационных элементов на основе меток
#
Ivanov
Модератор
201
Пожалуйста
Re: Показ схожих информационных элементов на основе меток
#
hell0men
307
Забили скобку } в конце. Спасибо!
Еще нужно добавить проверку на количество совпадающих тэгов. Введите такой параметр плиз. Нужно чтобы выводило при 2 и более совпадений, к примеру.

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

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

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

Почему бы нет, те же метки, тот же принцип.
Re: Показ схожих информационных элементов на основе меток
#
hell0men
307
Можно как-то их сортировать по количеству совпадений?
http://www.aiventa.ru
Re: Показ схожих информационных элементов на основе меток
#
hostcms
Модератор
16620
hell0men,
маловероятно, выбирается ИЭ с вхождением хотя бы одной метки из списка.
Re: Показ схожих информационных элементов на основе меток
#
hell0men
307
Перебрать массив со счетчиком, сделать сортировку по счетчику. Не знаю только как
http://www.aiventa.ru
Re: Показ схожих информационных элементов на основе меток
#
hell0men
307
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: Показ схожих информационных элементов на основе меток
#
hostcms
Модератор
16620
hell0men,
а $item_id определили???
Авторизация