Расширяем тег custom новыми параметрами [DLE 9.x — 10.x]

Расширяем тег custom новыми параметрами [DLE 9.x — 10.x]

Автор: Gameer / //igameer.ru/port/40-custom_tag.html
CMS: DLE 9.x — 10.x
Описание:
Добавляем возможность выводить новости через 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 '[[:<:]](".$match[1].")[[:>:]]'";
	}
	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 '[[:<:]](".$match[1].")[[:>:]]'";
	}
	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"}