0 Пользователей и 1 Гость просматривают эту тему.
  • 2 Ответов
  • 304 Просмотров
*

maxbat

  • Новичок
  • 5
  • 0 / 0
У кого есть решение модуля который смог бы показывать список похожих материалов сравнивая метки текущего материала с метками материалов заданных категорий. Например находясь на странице с метками(тегами) "красный, бензиновый, bmw" вывести список похожих материалов в которых есть наибольшее совпадение по меткам. Аналогично модулю "Материалы - Связанные материалы", но не по ключевым словам а именно по меткам.

Своими силами получается вот что:
Код
<?php defined('_JEXEC') or die;

// id текущего материала
$id_mat = JFactory::getApplication()->input->getCmd('id', '');

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select(array('content_item_id','tag_id'));
$query->from($db->quoteName('#__contentitem_tag_map'));
$db->setQuery($query);
$results = $db->loadRowList();

$a=array();//массив id меток текущего материала
foreach ($results as $val) { if($val[0]==$id_mat) {array_push($a,$val[1]);} }

// определяем макс ID
$max_id=0;
foreach ($results as $val) { if($val[0]>$max_id) $max_id=$val[0]; }
$max_id++;

$z=[]; //массив совпадений
$z=array_pad($z, $max_id,'0');//задаем размер и обнуляем его

foreach ($results as $val) {
    if(array_search($val[1], $a)!==false) {$z[$val[0]]++;}//есть совпадение, увеличиваем ячейку с индексом равным ID материала на 1.
}

$z[$id_mat]=0; // удаляем из массива ID текущего материала


Гуру, помогите дальше пожалуйста!
P.S. Вот только ругать не надо, лучше подскажите как надо. Я ведь не волшебник - я только учусь!
« Последнее редактирование: 26.10.2020, 16:17:48 от maxbat »
*

gartes

  • Завсегдатай
  • 1856
  • 142 / 6
  • Е = mс²
Первое  чего я бы поправил - это заменил вывод результата не в $results = $db->loadRowList();
Код
$db = \Joomla\CMS\Factory::getDbo();
$query = $db->getQuery(true);
$query->select(array('content_item_id','tag_id'));
$query->from($db->quoteName('#__contentitem_tag_map'));
$db->setQuery($query);
$results = $db->loadAssocList();

// И тогда
$a=array();//массив id меток текущего материала
foreach ($results as $val) {
    if($val['content_item_id']==$id_mat) {
        array_push($a,$val['tag_id']);
    }
}

*

gartes

  • Завсегдатай
  • 1856
  • 142 / 6
  • Е = mс²
решение Ваше  - простите неправильно !
Нет под рукой Joomla  - сайта !  с метками !
Что там в таблице у вас #__contentitem_tag_map - Срин киньте !
Посмотрим ! - Напомните в личку - сто бы не потерялось !
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как добавить текст на раздел без отображения на всех внутренних и статьях?

Автор Igor5

Ответов: 1
Просмотров: 1170
Последний ответ 24.11.2022, 18:35:04
от beliyadm
[howto] Блог. Вывод материалов в списке подкатегорий

Автор dynamit

Ответов: 3
Просмотров: 751
Последний ответ 05.10.2022, 13:37:10
от Mitriy
Перенос материалов и категорий (с сохранением ID) на другой сайт

Автор mak200

Ответов: 0
Просмотров: 163
Последний ответ 09.09.2022, 09:30:53
от mak200
Исключить из списка материалов категории текущий материал

Автор Vlad1

Ответов: 3
Просмотров: 274
Последний ответ 21.08.2022, 21:24:51
от marksetter
Сортировка материалов в блоге

Автор ebonydabster

Ответов: 6
Просмотров: 791
Последний ответ 13.07.2022, 16:42:46
от original.gangsta