Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как ограничить вывод похожих новостей стандартного {related-news} по дате?

Как ограничить вывод похожих новостей стандартного {related-news} по дате?


     07.04.2022    похожие новости, дата    Общие вопросы по PHP, Хаки    157

вопрос
Добрый день. Подскажите, пожалуйста, как в файле /engine/modules/show.full.php ограничить вывод похожих новостей стандартным тегом {related-news} по количеству дней? Чтобы выводились похожие новости, к примеру,за 60 последних дней? Проблема в том, что из в "похожих новостях" выводятся статьи многолетней давности. DLE10.4

Ответа пока нет


5 комментариев

dj-avtosh
PHP-developer

dj-avtosh - 7 апреля 2022 12:57 -

$db->query( "SELECT id, date, short_story, xfields, title, category, alt_name, MATCH (title, short_story, full_story, xfields) AGAINST ('{$body}') as score FROM " . PREFIX . "_post {$join_category}WHERE {$where_category}{$allowed_cats}{$not_allowed_cats}MATCH (title, short_story, full_story, xfields) AGAINST ('{$body}') AND id != " . $row['id'] . " AND approve=1" . $where_date . " ORDER BY score DESC LIMIT " . $config['related_number'] );


заменить на

$db->query( "SELECT id, date, short_story, xfields, title, category, alt_name, MATCH (title, short_story, full_story, xfields) AGAINST ('{$body}') as score FROM " . PREFIX . "_post {$join_category}WHERE {$where_category}{$allowed_cats}{$not_allowed_cats}MATCH (title, short_story, full_story, xfields) AGAINST ('{$body}') AND id != " . $row['id'] . " AND approve=1" . $where_date . " AND date BETWEEN (CURDATE() - INTERVAL 60 DAY) AND CURDATE() ORDER BY score DESC LIMIT " . $config['related_number'] );


однако этот результат будет висеть до следующего кеша related_ids (до перестроения публикаций и конечно же туда не будут до этого попадать новые новости)

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

Сергей
Юзер

Сергей - 7 апреля 2022 13:47 -

Большое спасибо!
1. Я правильно понимаю, что по описанному вами принципу и работают похожие новости по умолчанию - с ручной перестройкой публикаций, чтобы изменились старые и попали новые новости?
2. Я не понимаю почему стандартные похожие новости {related-news} выводятся в конце полной новости в случайном порядке, а не по времени создания? Т.е. может идти похожая новость месячной давности, потом годовой, потом недельной давности. Почему нет сортировки по дате? Чтобы первыми выводились всегда самые свежие новости?

dj-avtosh
PHP-developer

dj-avtosh - 7 апреля 2022 14:10 -

Если честно, то в DLE все логично, у каждой новости есть поле related_ids - и там в целом для каждой новости похожие показываются в их исторической прявязке к текущей. То что сделали мы с Вами - даст лишь только то, что в похожие попадут лишь за 60 дней - и если контент пополняться не будет, то у некоторых новостей похожих со временем не останется.

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 7 апреля 2022 14:12 -

а то что выводятся не по дате лишь по тому, что сортируются по максимальному вхождению, может помочь конечно такое, если нвосоти сильно похожи друг с другом:

  ORDER BY score DESC


заменить на

 ORDER BY score DESC, date DESC

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

Сергей
Юзер

Сергей - 7 апреля 2022 14:16 -

Похоже это то, что надо! Буду пробовать. Большое спасибо за помощь и хорошего Вам дня!

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх