Сортировка по дополнительным полям в стандартном теге sort

Сортировка по дополнительным полям в стандартном теге sort

Хак позволит сортировать новости по дополнительным полям в теге {sort}.
 
Установка:
1. Открыть engine/init.php и найти:
if( !$config['allow_comments'] ) unset($allowed_sort[3]);

Добавить выше:
$allowed_sort = array_merge($allowed_sort, array("year")); // вписываем сюда название доп.полей которые нужны через запятую "year", "director"

2. Открыть engine/modules/functions.php и найти:
$allowed_sort = array ('date', 'rating', 'news_read', 'comm_num', 'title' );

Заменить на:
$allowed_sort = array ('date', 'rating', 'news_read', 'comm_num', 'title', 'year'); // вписываем сюда название доп.полей которые нужны через запятую

Найте далее:
$soft_by_array = array (

Добавить ниже:
'year' => array ( // так делаем для каждого поля, вместо year вписываем название нужного доп.поля и вместо год, то что будет показано пользователям сайта
    'name' => "год", 'value' => "year", 'direction' => "desc", 'image' => ""
),

3. Открыть engine/engine.php и найти (все вхождения):
if (isset ( $_SESSION['dle_sort_

Добавить выше:
if(isset ( $_SESSION['dle_sort_' . $do] ) && in_array($_SESSION['dle_sort_' . $do], array("year", "director"))) // вписываем сюда все названия доп полей которые нужны через запятую в кавычках, пример "year", "director"
{
    if(in_array($_SESSION['dle_sort_' . $do], array("year"))) // вписываем сюда название доп поле которые должны быть числами
        $news_sort_by = "ABS(SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  '{$_SESSION['dle_sort_' . $do]}|', -1 ) ,  '||', 1 ))";
 
    if(in_array($_SESSION['dle_sort_' . $do], array("director"))) // вписываем сюда название доп поле которые должны быть строками, если не нужны удалить две строчки эти
        $news_sort_by = "SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  '{$_SESSION['dle_sort_' . $do]}|', -1 ) ,  '||', 1 )";
}
else

Готово!
 
Версия DLE: 11.х
Автор: PunPun
Источник:
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
  • Рейтинг@Mail.ru
  • Яндекс.Метрика