» » [Глобальный хак] Индекс сортировки новостей в DLE или как вывести новости в нужном порядке

[Глобальный хак] Индекс сортировки новостей в DLE или как вывести новости в нужном порядке

14.03
66
21 990
[Глобальный хак] Индекс сортировки новостей в DLE или как вывести новости в нужном порядке

Вы когда нибудь задумывались над вопросом произвольной сортировки новостей в DLE?
Т.е. такой порядок вывода новостей, который не будет зависеть от даты, просмотров, рейтинга или имени новости по умолчанию в DLE не возможен и плясками с использованием fixed и изменением даты новости тут не обойдёшься.
Нужен некий параметр, согласно значения которого будут сортироваться новости, в bitrix есть такой параметр и называется он индекс сортировки.

Суть индекса сортировки проста

В БД заводим новое поле, по умолчанию его значение равно 500. Чем больше значение этого индекса отличается от исходного, тем выше или ниже будет стоять новость в списке новостей.
Все новости сортируются сначала по значению этого поля, а уже потом по дате добавления (настройка по умолчанию DLE). Конечно же фиксированные новости будут в любом случаи выше, но и там они будут сортироваться сначала по индексу сортировки, а потом по дате.

Что это даст и зачем нужно?

Представьте ситуацию, когда нужно по какой то причине "поднять новости выше остальных", например товары в каталоге, но при этом у вас уже есть несколько зафиксированных новостей выше которых не должна подниматься никакая новость, или рекламная статья, за просмотры которой вам платит рекламодатель, но фиксированные новости имеют другой внешний вид, или у вас кинотеатр и нужно вытянуть несколько фильмов на верх в определённом порядке. Вот в этих случаях и нужен индекс сортировки.

Собственно о самом хаке

Установка детально расписана, не слишком сложная, а запрос в БД можно выполнить в автоматическом режиме непосредственно из инструкции по установке.
После установки у всех новостей будет установлен индекс сортировки равным 500, а в админке, в разделе Настройка системы, на вкладке "Настройки вывода новостей" появится вот такая настройка:

[Глобальный хак] Индекс сортировки новостей в DLE или как вывести новости в нужном порядке

Можно включить или отключить учёт индекса сортировки (пока глобально, по всему сайту) и выбрать направление сортировки.

В форме добавления и радактирования новостей в админке так же появится дополнительное поле индекса сортировки:

[Глобальный хак] Индекс сортировки новостей в DLE или как вывести новости в нужном порядке


Это первая версия глобального хака, если будет интересно и востребовано - буду постепенно добавлять возможности более тонкой настройки вывода в категориях и т.п.


Жду ваших мнений!

Похожие материалы

Комментарии

wincloa
wincloa 12 мая 2014 10:30
ПафНутиЙ
Спасибо, отдельное за хак, извеняюсь что так наспамил,немного не разобрался просто, хотел дополнить...

А нельзя использовать данный хак с использованием Block Pro? Я думаю это бы было решением вопроса.
ПафНутиЙ
ПафНутиЙ 12 мая 2014 11:08
Можно, напишите мне на email, если время будет сделаю.
wincloa
wincloa 12 мая 2014 16:31
Еще хотел спросить, так как я хочу сортировать с помощью данного индекса только на отдельной странице. А для главной буду выводить с помощью тега Custom, они ведь не будут сортироватся по индексу?
ПафНутиЙ
ПафНутиЙ 12 мая 2014 17:11
скорее всего будут, хак глобальный.
wincloa
wincloa 16 мая 2014 13:29
Тогда было бы хорошо, если б была возможность выбора сортировка (по умолчанию, для отдельных страниц)...
ПафНутиЙ
ПафНутиЙ 16 мая 2014 19:21
боюсь я пока не готов возвращаться к этой теме, слишком много изменений уже произошло.
ForeverRED66
ForeverRED66 29 июня 2014 09:56
поставил на 10.2 его.
Вроде как все норм, пока без ошибок, но на этапе:
5)Открыть \engine\inc\editnews.php
все внес, поправив под 10.2, но строки Индекс сортировки так и не появилось, хотя в пункте 4)Открыть \engine\inc\addnews.php все хорошо, строчка Индекс сортировки появилась.
ПафНутиЙ
ПафНутиЙ 2 июля 2014 13:02
в 10.2 много изменений, скорее всего просто сделали что-то не так или не там.
DMJO
DMJO 28 июня 2015 17:04
Как в Индексе 500 сделать сортировку на главной странице? В категориях нормально все сортируется, а вот на главной не хочет.

На главной новости выводятся следующим образом:
{custom category="49" template="shortstory" aviable="main" from="0" sort="desc" order="date" limit="8" fixed="yes" cache="no"}
ПафНутиЙ
ПафНутиЙ 28 июня 2015 17:14
В категориях вы новости выводите стандартным способом, или тоже через custom?
DMJO
DMJO 28 июня 2015 17:21
Да вроде стандартным способом выводятся.
ПафНутиЙ
ПафНутиЙ 28 июня 2015 17:33
В engine/functions.php
найдите
$tpl->load_template( $custom_template . '.tpl' );

ниже добавьте:
$sort_index = "";
		if ($config['allow_sort_index']) {
			$sort_index = ($config['news_msort_index']) ? "sorting ".$config['news_msort_index'].", " : "sorting ASC, ";
		}

ниже найдите:
$fixed . $news_sort

и замените на:
$fixed . $sort_index . $news_sort

отпишитесь о результатах, я дополню инструкцию.
DMJO
DMJO 28 июня 2015 17:44
Cкорей всего в В engine/modules/functions.php

Спасибо! теперь все работает.
ПафНутиЙ
ПафНутиЙ 28 июня 2015 17:45
да, недопечатал smile
отлично, дополню инструкцию.
DMJO
DMJO 10 августа 2015 21:18
ПафНутиЙ, Можно ли номер индекса вывести в полную или короткую новость? чтобы видеть какую новость поднять, а какую можно опустить. А то постоянно заходить в админку и смотреть не совсем удобно.
ПафНутиЙ
ПафНутиЙ 10 августа 2015 21:31
Да, можно.
Добавьте в show.short.php и show.full.php код:
$tpl->set('{sorting}', $row['sorting']);
DMJO
DMJO 10 августа 2015 21:50
Пафнутий, Спасибо! Только в некоторых новостях выводит, а в некоторых выводится просто тег:
{sorting}
DMJO
DMJO 10 августа 2015 21:56
А все разобрался не туда код запихал, Спасибо еще раз )
Chessman
Chessman 28 августа 2015 14:02
На 10.5 станет
или даже и не пробовать?
DMJO
DMJO 28 августа 2015 14:15
Да пойдет
Chessman
Chessman 1 сентября 2015 21:23
Открыть \engine\inc\editnews.php
Найти:
<tr>
        <td height="29" style="padding-left:5px;">{$lang['edit_cat']}</td>


Не могу найти
DMJO
DMJO 1 сентября 2015 21:37
Найдите:
<label class="control-label col-md-2">{$lang['edit_cat']}</label>
Chessman
Chessman 1 сентября 2015 21:47
вроде разобрался
теперь жду "вывода в категориях"
Chessman
Chessman 1 сентября 2015 22:30
и ещё вопрос:
что нужно изменить чтоб можно было делать дробные значения индекса.
В базе поменял тип данных на float
ПафНутиЙ
ПафНутиЙ 1 сентября 2015 22:54
Встречный вопрос:
Неужели 10-ти значной цифры не достаточно для выставления требуемого индекса?
Chessman
Chessman 1 сентября 2015 22:56
просто я этот параметр использую как стоимость.
нерационально использовать ещё и дополнительное поле и прописывать дважды одно и тоже
ПафНутиЙ
ПафНутиЙ 1 сентября 2015 22:58
Зря.
Chessman
Chessman 1 сентября 2015 22:59
т.е. Вы не знаете/ не скажете, как вводить дробные числа?
ПафНутиЙ
ПафНутиЙ 3 сентября 2015 18:18
Я не вижу смысла в использовании индекса сортировки в качестве цены, это нелогично.
over
over 12 октября 2015 13:35
Паш, а на 10.5 работает ?

Добавить комментарий

Комментировать могут только зарегистрированные пользователи

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.