• Автор:

    Ash Williams
  • Добавлено:

    мар 14, 2017
  • Комментариев:

    1
  • Просмотров:

    517

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


Хак позволит сортировать новости по дополнительным полям в теге {sort}

Установка хака Сортировка новостей по дополнительным полям в стандартном теге {sort} для DLE
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
    if (isset ( $_SESSION['dle_sort_' . $do] )) $news_sort_by = $_SESSION['dle_sort_' . $do];


Требования к установке:
Версия DLE: 10.2 и выше
Кодировка: UTF-8 или CP1251
Версия php: 5.3 и выше
dle
Вернуться

Комментарии:


  1. xatin → 3 апреля 2017 20:51
    это конечно круто, но как быть, если тип дополнительного поля является список? как вывести те значения в сортировке?
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.