вопрос
Доброго времени суток ! Товарищи, подскажите пожалуйста, как сделать блок с рекомендованными новостями ?
У меня на сайте есть категория, в которой очень много новостей, они выводятся в отдельном блоке рандомно по 4 штуки.
Как сделать, что бы рандомно выводились новости только с высоким рейтингом?
У меня на сайте есть категория, в которой очень много новостей, они выводятся в отдельном блоке рандомно по 4 штуки.
{custom category="10" template="custom-side1" limit="4" order="rand" cache="no"}
Как сделать, что бы рандомно выводились новости только с высоким рейтингом?
Тестировал на 13.1, думаю будет работать и на других версиях.
В "\engine\modules\functions.php" выше строки
В этом же файле добавляем новую функцию, можно в самый конец файла.
Теперь можно указывать несколько критериев сортировки в параметре order, например, order="rating,reads". Можно дополнительно указывать направление сортировки - DESC, ASC . Например, для вашего случая
Параметр sort - игнорируется.
В "\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 = '';
}
В этом же файле добавляем новую функцию, можно в самый конец файла.
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;
}
Теперь можно указывать несколько критериев сортировки в параметре order, например, order="rating,reads". Можно дополнительно указывать направление сортировки - DESC, ASC . Например, для вашего случая
{custom category="10" template="custom-side1" limit="4" order="rating DESC, rand" cache="no"}
Параметр sort - игнорируется.