Рандомный вывод новостей только с высоким рейтингом

Рандомный вывод новостей только с высоким рейтингом

Небольшой хак поможет вывести на сайте, например, блок с рекомендуемыми новостями. При этом новости будут выводится рандомно и только с высоким рейтингом.


Установка:
1. Открыть engine/modules/functions.php и найти:
if ( $allowed_sort[$match[1]] ) $news_sort = $allowed_sort[$match[1]];

Добавить выше:
		if ($str = parse_sort($match[1], $allowed_sort)) {
			$news_sort = $str;
			$news_msort = '';
		}

В самом низу functions.php добавить:
function parse_sort($sort_string, $allowed_sort) {
	$result = '';

	if (strpos($sort_string, ',') !== false) {
		$parts = explode(',', $sort_string);
		
		foreach ($parts as $value) {
			$value = trim($value);
			$arr = explode(' ', $value);
			$arr = array_map('trim', $arr);
			list($order, $direction) = $arr;
			$direction = strtoupper($direction);
			
			if (!empty($allowed_sort[$order])) {
				$result .= ($result ? ', ' : '').$allowed_sort[$order];
				if ($direction and in_array($direction, array('ASC', 'DESC')) and $order != 'rand')
					$result .= ' '.$direction;
			}
		}
	}
	
	return $result;
}

2. В нужное место main.tpl добавить, например:
{custom category="10" template="custom-side1" limit="4" order="rating DESC, rand" cache="no"}

Теперь можно указывать несколько критериев сортировки в параметре order, например order="rating,reads". Можно дополнительно указывать направление сортировки - DESC или ASC. Параметр sort - игнорируется.

Готово!
 
Версия DLE: 13.1
Автор: Flash
Источник
Информация
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.

Комментариев 3

makhara 20 февраля 2024 14:28
Не подтверждаю проблему. Поставил для 13.4, все работает!
Oxigen 16 ноября 2019 10:48
shirshov1, не подтверждаю проблему. Поставил для теста, все работает!
--------------------
Всё, что вы напишите, будет использовано против вас при показе контекстной рекламы :)
shirshov1 13 ноября 2019 20:57
Что то не получилось запустить на 13.2, тупо не чего не происходит