Расширяем тег custom новыми параметрами DLE 9.x — 10.x » Techno-Co — Всё для вебмастера, для создание сайтов с нуля. {title}

Добавляем возможность выводить новости через custom по сортировке тегов, доп. полей, рейтинга, количества просмотров, количества комментариев, по дате самой новости.

Установка:

Открыть /engine/modules/functions.php найти :

if( preg_match( "#category=['\"](.+?)['\"]#i", $param_str, $match ) ) {

Выше вставить :

if( preg_match( "#tags=['\"](.+?)['\"]#i", $param_str, $match ) ) {
                $match[1] = explode (',', $match[1]);
                $match[1] = implode (',', $match[1]);
                $match[1] = str_replace(',', '|', $match[1]);
                $where[] = "tags regexp '[[::]]'";
        }
        
        if( preg_match( "#xfield=['\"](.+?)['\"]#i", $param_str, $match ) ) {
                $match[1] = explode (',', $match[1]);
                $match[1] = implode (',', $match[1]);
                $match[1] = str_replace(',', '|', $match[1]);
                $where[] = "xfields regexp '[[::]]'";
        }
        
        if( preg_match( "#comm_more=['\"](.+?)['\"]#i", $param_str, $match ) ) {
                $match[1] = (int)$match[1];
                $where[] = "comm_num > " . $match[1];
        }
        
        if( preg_match( "#comm_less=['\"](.+?)['\"]#i", $param_str, $match ) ) {
                $match[1] = (int)$match[1];
                $where[] = "comm_num < " . $match[1] ;
        }
        
        if( preg_match( "#comm_equally=['\"](.+?)['\"]#i", $param_str, $match ) ) {
                $match[1] = (int)$match[1];
                $where[] = "comm_num = " . $match[1];
        }
        
        if( preg_match( "#date=['\"](.+?)['\"]#i", $param_str, $match ) ) {
                $match[1] = (int)$match[1];
                $where[] = "date LIKE '".$match[1]."%'";
        }
        
        if( preg_match( "#read_more=['\"](.+?)['\"]#i", $param_str, $match ) ) {
                $match[1] = (int)$match[1];
                $where[] = "news_read > " . $match[1];
        }
        
        if( preg_match( "#read_less=['\"](.+?)['\"]#i", $param_str, $match ) ) {
                $match[1] = (int)$match[1];
                $where[] = "news_read < " . $match[1];
        }
        
        if( preg_match( "#read_equally=['\"](.+?)['\"]#i", $param_str, $match ) ) {
                $match[1] = (int)$match[1];
                $where[] = "news_read = " . $match[1];
        }
        
        if( preg_match( "#rating_more=['\"](.+?)['\"]#i", $param_str, $match ) ) {
                $match[1] = (int)$match[1];
                $where[] = "rating > " . $match[1];
        }
        
        if( preg_match( "#rating_less=['\"](.+?)['\"]#i", $param_str, $match ) ) {
                $match[1] = (int)$match[1];
                $where[] = "rating < " . $match[1];
        }
        
        if( preg_match( "#rating_equally=['\"](.+?)['\"]#i", $param_str, $match ) ) {
                $match[1] = (int)$match[1];
                $where[] = "rating = " . $match[1];
        }

Все…

Использование :

tags — это список ключевых слов из облака тегов, назначенных новостям. Например тег

{ custom tags="рок,гранж"}

выведет все новости, которые содержат ключевые слова из облака тегов «рок» и «гранж».

xfield — это список значений доп полей, назначенных новостям. Например тег

{ custom xfield="Агата Кристи, Гражданская Оборона"}

выведет все новости, которые содержат значение доп поля «Агата Кристи» и «Гражданская Оборона».

comm_more — выведет новости в которых количество комментариев больше за указанное значение. Например тег

{ custom comm_more="5"}

выведет все новости, которые имеют количество комментариев больше 5 (5 сюда не включается, начинается отсчет с 6).

comm_less — выведет новости в которых количество комментариев меньше за указанное значение. Например тег

{ custom comm_less="5"}

выведет все новости, которые имеют количество комментариев меньше 5 (5 сюда не включается, начинается отсчет с 4).

comm_equally — выведет новости в которых количество комментариев равно указанному значению. Например тег

{ custom comm_equally="5"}

выведет все новости, которые имеют количество комментариев 5.

date — выведет новости в которых дата начинается с указанного значения. Например тег

{ custom date="2014-05-15"}

выведет все новости, которые имеют дату которая имеет значение 2014-05-15.

read_more — выведет новости в которых количество просмотров больше за указанное значение. Например тег

{ custom read_more="5"}

выведет все новости, которые имеют количество просмотров больше 5 (5 сюда не включается, начинается отсчет с 6).

read_less — выведет новости в которых количество просмотров меньше за указанное значение. Например тег

{ custom read_less="5"}

выведет все новости, которые имеют количество просмотров меньше 5 (5 сюда не включается, начинается отсчет с 4).

read_equally — выведет новости в которых количество просмотров равно указанному значению. Например тег

{ custom read_equally="5"}

выведет все новости, которые имеют количество просмотров 5.

rating_more — выведет новости в которых рейтинг больше за указанное значение. Например тег

{ custom rating_more="5"}

выведет все новости, которые имеют рейтинг больше 5 (5 сюда не включается, начинается отсчет с 6).

rating_less — выведет новости в которых рейтинг меньше за указанное значение. Например тег

{ custom rating_less="5"}

выведет все новости, которые имеют рейтинг меньше 5 (5 сюда не включается, начинается отсчет с 4).

rating_equally — выведет новости в которых рейтинг равен указанному значению. Например тег

{ custom rating_equally="5"}

выведет все новости, которые имеют рейтинг 5.

Примеры использования :

Вывод новостей с интервалом рейтинг от 3 до 5 :

{ custom rating_more="2" rating_less="6"}

Вывод новостей с интервалом просмотров от 1000 до 2000 :

{ custom read_more="999" read_less="2001"}

Вывод новостей с интервалом комментариев от 15 до 25:

{ custom comm_more="14" comm_less="26"}

Автор: Gameer

CMS: DLE 9.x — 10.x