DataLife Engine > Версия для печати > Category Related News

Хак Category Related News позволяет выводить похожие новости только из основной категории расположения просматриваемой новости.Таким образом если новость находится в Фильмы->Мультфильмы, то в ней похожие новости будут браться только из категории Фильмы и всех подкатегорий данной категории и новости из других категорий, например Музыка, Программы и т.д., выводится не будут в категории фильмов.

Внимание! Хак рабочий только на версиях DLE 9.6 и 9.7.

Особенности:

— выводит новости из категорий принадлежащей родительской категории просматриваемой новости.- не создаёт дополнительных запросов, используется стандартный механизм определения похожих новостей но с ограничением по категориям.- не учитывает разрешённые категории по группам пользователей, в похожих выводит из всех категорий не зависимо имеет юзер доступ к просмотру новостей из неё или нет.

Установка:

1. Файл: /engine/modules/show.full.php

Найти:

$allowed_cats = array();

                    foreach ($user_group as $value) {
                        if ($value['allow_cats'] != "all" AND !$value['allow_short'] ) $allowed_cats[] = $db->safesql($value['allow_cats']);
                    }

                    if (count($allowed_cats)) {
                        $allowed_cats = implode(",", $allowed_cats);
                        $allowed_cats = explode(",", $allowed_cats);
                        $allowed_cats = array_unique($allowed_cats);
                        sort($allowed_cats);

                        if ($config['allow_multi_category']) {

                            $allowed_cats = "category regexp '[[::]]' AND ";

                        } else {

                            $allowed_cats = "category IN ('" . implode ( "','", $allowed_cats ) . "') AND ";

                        }
                    } else $allowed_cats="";

Заменить на:

#*** Category Related News * by MSW ***#
                    $cat_array = array();
                    foreach($cat_list as $post_cat) {
                        $cat_array = array_unique( array_merge( $cat_array, explode( '|', get_sub_cats( $cat_info[$post_cat]['parentid'] ) ) ) );
                    }
                    if($config['allow_multi_category']) {
                        $allowed_cats = "category regexp '[[::]]' AND ";
                    } else {
                        $allowed_cats = "category IN ('". implode( ',', $cat_array ) ."') AND ";
                    }
#*** Category Related News * by MSW ***#

2. Выполнить запрос в MySQL:

UPDATE  `dle_post_extras` SET  `related_ids` =  ""

3. Очистить кеш в админке DLE.

* Внимание! Это инструкция по изменению логики работы стандартной функции вывода похожих новостей! Она не включает в себя инструкцию по оформлению вывода похожих новостей как на скриншоте!

Автор: MSW

Версия DLE: 9.6-9.7
Сайт поддержки: 0-web.ru Вернуться назад