Помощь Как связать новости из разных категории

Attyla

Профессор
Регистрация
21 Ноя 2012
Сообщения
160
Реакции
44
Сайт на DatalifeEngine 9.8, есть категория Исполнители (И1, И2, И3,…Иn) и категория Песни/Альбом (П1, П2, П3,…Пm). Вопрос: как автоматически вывести в новости про исполнителя «И» все его песни/альбомы «П». Как их связать?
 
Находясь в новости, мы знаем номер id её категории. => можно сделать SQL-запрос на все категории, для которых данный ID родительский (а в ДЛЕ вообще функция такая есть - надо в коде искать) - дальше делаем SQL-запрос, на выборку всех статей из полученных категорий.

Короче, модуль писать надо...

Либо можно обойтись тегом custom, но я пока не придумал алгоритм для него...
 
Думал в сторону: для категории песни/альбомы создать доп. поле ID исполнителя, где будет ID новости из категории Исполнители. Но как выводить потом новости у которых значение доп. поля равно ID
 
Можно, если по простому, через стандартные теги сделать. Тег - имя исполнителя. В новости вывести все другие песни этого же исполнителя не выйдет (а надо ли - список может очень громоздкий получиться), а в виде списка новостей - пожалуйста.
 
Можно, если по простому, через стандартные теги сделать. Тег - имя исполнителя. В новости вывести все другие песни этого же исполнителя не выйдет (а надо ли - список может очень громоздкий получиться), а в виде списка новостей - пожалуйста.
Ну так обычный список новостей в виде ссылок. Как через стандартные теги реализовать?
 
Кстати, можно сделать через вывод "похожих новостей", изменив запрос в show.full.php и введя доп. поле к новости с именем исполнителя (xfields).
Запрос оригинальный такой
PHP:
$db->query( "SELECT id, date, short_story, xfields, title, category, alt_name FROM " . PREFIX . "_post WHERE {$allowed_cats}MATCH (title, short_story, full_story, xfields) AGAINST ('$body') AND id != " . $row['id'] . " AND approve=1" . $where_date . " LIMIT " . $config['related_number'] );

заменить на что-то такое
PHP:
$db->query( "SELECT id, date, short_story, xfields, title, category, alt_name FROM " . PREFIX . "_post WHERE {$allowed_cats}MATCH (xfields) AGAINST ('$xfilelds') AND id != " . $row['id'] . " AND approve=1" . $where_date );

т.е. изменить запрос чтобы искал только по доп. полям.


========
Как через стандартные теги реализовать?
В новости в теги вписыватся имя исполнителя. При клике на тег (при просмотре новости),
выводятся все новости с этим тегом.
 
Кто возьмётся за разработку такого модуля? Готов обсудить.

В место технического задания:
1. Модулю передается {news-id} или idновости (например 6)где он выводится через {includefile="engine/modules/other_modules/modulename/newsidinxfields.php?parentnewsID={news-id}&xfieldname=artistID&displayquantity=10&sortby=date"}
2. Модулю передается название дополнительного поля значение которого он будет сравнивать с ID новости где он выводится. Например это будет доп. Поле с названием artistID.
3. Далее модуль обращается к базе данных и ищет новости в table dle_post где значение xfields равно artistID|6 и определяет общее количество и выводит последние по дате новости (самые свежие, или другой параметр) в количестве (displayquantity) например это будет 10.
4. Далее модуль выводит подходящие новости в том месте где он вызываетсяиспользуя .tpl шаблон для этого.
 
Назад
Сверху