2.06.15, 10:03
0 комментарий
  DLE Хаки

Расширяем тег custom новыми параметрами 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"}


Автор: Gameer
CMS: DLE 9.x - 10.x

Напишите своё мнение