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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

Комментарии

lsdoptom
lsdoptom 16 марта 2013 11:59
спасибо,заценим.ПафнутиЙ не могли бы вы написать статью о ускорении индексации
на DLE 9.7 - 9.8?
ПафНутиЙ
ПафНутиЙ 16 марта 2013 12:02
На здоровье!
Думаю ускорение индексации сайта - не мой профиль) да и от движка это не зависит.
salam
salam 21 марта 2013 12:47
Паша привет. Спасибо за хак.
Есть вот такой вопрос: индексы 409 и 501 будут чем то отличаться?
salam
salam 21 марта 2013 12:52
И еще вопрос, индекс по дефолту ставится 500. Изменяется ли он в зависимости от времени/рейтинга/просмотров?
Я к тому что при нечастом использовании этого хака, придется править еще и поле индекс или иначе все новости будут равно приоритетными.
ПафНутиЙ
ПафНутиЙ 21 марта 2013 13:58
Цитата: salam
Есть вот такой вопрос: индексы 409 и 501 будут чем то отличаться?

так же как и 502 и 503 или 1 и 10000001
Чем больше - тем выше (или ниже, в зависимости от насторек).
Индекс можно поменять только руками, в этом его смысл. На приоритет новостей с одинаковым индексом он не влияет. Т.е. если выводить новости по просмотрам, и у двух новостей будет одинаковый индекс - выше будет та, у которой больше просмотров.
xsash
xsash 1 апреля 2013 10:00
А можно ли организовать вывод этого индекса в теле новости?
Тогда можно быдет использовать индекс как сортировку "по цене" товара или услуги.

+ добавить пункт в блок "сортировать по", правда это уже потребует внесение изменений в код движка
ПафНутиЙ
ПафНутиЙ 1 апреля 2013 10:18
Для вывода достаточно назначить тег, выводящий индекс сортировки. к примеру так:
$tpl->set( '{sorting}', $row['sorting'] );


для добавления собственной сортировки надо смотреть в сторону engine.php
elseif ($do == 'lastnews') {

и делать по аналогии
cereal005
cereal005 8 апреля 2013 13:40
Хак интересен. Спасибо за труд!
ПафНутиЙ
ПафНутиЙ 8 апреля 2013 13:44
На здоровье!
Нашли применение?
salam
salam 7 июня 2013 15:22
ПафНутиЙ,
Цитата: ПафНутиЙ
Нашли применение?

Теоретически готов применить на сайте с анкетами.
Паша, можно ли добавить в хак возможность периодической рандомной сортировки например не зафиксированных новостей или новостей имеющих индекс ниже определенного значения. Период чтоб задавался (ручками).
ПафНутиЙ
ПафНутиЙ 7 июня 2013 15:34
Теоретически возможно, но на практике не уверен. Мне проще в blockpro добавить выборку по индексу сортировки, а рандомные новости там и так выводятся. ))
salam
salam 7 июня 2013 16:40
Паш, насколько сложно это сделать?
И можно задать период рандома?
ПафНутиЙ
ПафНутиЙ 9 июня 2013 15:01
рандомные новости blockpro и так умеет выводить, период смены рандома равен времени жизни кеша блока.
MAPKOBKA
MAPKOBKA 21 июня 2013 16:59
Установил на DLE 10. Встало отлично. Весь функционал рабочий. Очень удобный способ поднятия новостей, как и их сортировки.
По ходу использования хака, если возникнут идеи по его развитию, обязательно отпишусь.
Огромное спасибо за хак.
ПафНутиЙ
ПафНутиЙ 21 июня 2013 17:02
На здоровье!
Обязательно отписывайтесь, будем вместе совершенствовать.
MAPKOBKA
MAPKOBKA 23 июня 2013 17:46
ПафНутиЙ,
Нехватает вывода в админке, в списке статей Индекса статьи.А если бы еще и через ajax вывести изменение индекса в списке статей. В админке, было бы просто волшебно :) Открывать каждую статью и смотреть в ней индекс не удобно.
ПафНутиЙ
ПафНутиЙ 23 июня 2013 18:19
Ок. Запишем для след версий.
MAPKOBKA
MAPKOBKA 3 июля 2013 21:28
ПафНутиЙ,
Еще одна идейка, хорошо бы интегрировать этот хак с Вашим Block Pro3. Тогда можно было бы выводить статьи по индексу. Что позволит создавать совсем уж произвольные блоки новостей.
ПафНутиЙ
ПафНутиЙ 3 июля 2013 22:25
Это уже давно в планах
TODOTODO

но пока не знаю нужно ли добавлять это в стандартную комплектацию.
MAPKOBKA
MAPKOBKA 5 июля 2013 15:37
Еще одно применение нашел индексу новостей. Заметил странный баг, при выводе через xsearch по дополнительному полу, в список попадают статьи с тем же названием, что и дополнительное поле. Так, я через этот индекс исключил, ненужные мне статьи. И теперь выводится только новости по дополнительному полю
Немного запутанно, но еще раз спасибо за нужный и полезный хак :)
Yamakasi
Yamakasi 7 июля 2013 15:36
довольно хороший хак, это очень хорошо подойдёт к сайтом с большим количеством новостей, например на сайт если в день попадает от 20 и больше новостей, тем самым можно поставить выше индекс хорошим новостям и они будут выше чем другие в тот же день, что и есть хорошо, и не нужно будет уже фиксацию делать! что и есть хорошо!
спасибо за полезный хак!
Matysh
Matysh 24 сентября 2013 07:56
Вещь полезная и интересная. Мне кажется, что ее естественным продолжением должна быть полная переработка механизма доп. полей в дле - мне кажется, что он, мягко говоря неудобный и нефункциональный. Например, нужна группировка и сортировка по доп.полям, фильтрация по параметрам и т.д. Сейчас это очень трудно реализовать. Если интересно - пиши skype matysh2010, я заинтересован в таком функционале, могу оплатить.
ПафНутиЙ
ПафНутиЙ 24 сентября 2013 09:03
Спасибо за предложение, но пока я морально не готов к переработке механизмма допполей в DLE )
Andrey
Andrey 4 октября 2013 11:07
крайне полезный хак, жаль что до сих пор не реализовано в самом движке. Мне изредка приходится на одном проекте зафиксированные новости править по дате чтобы упорядочить - что не есть гуд (поисковые ошибки индексирования).
Для пожелания, реализовать порядок сортировки в админпанели на основе jquery - перетаскивая и потом сохроняя порядок. Так как сделано в разделе управления дополнительными полями новостей.
ПафНутиЙ
ПафНутиЙ 4 октября 2013 12:07
Возможно как нибудь сделаю и такое, но пока много чего есть более интересного для меня в плане разработки.
Colt
Colt 1 января 2014 21:44
Паша, а как можно в одной категории отсортировать новости по алфавиту? У меня просто есть категория производителей и хотелось бы расположить их в алфавитном порядке.
wincloa
wincloa 11 мая 2014 13:49
Есть 2 важных вопроса.
Как я понял десятичные числа округляются, для меня они очень важны при сортировке, можно ли использовать десятичные числа?
И еще можно ли использоваться данную сортировку только на отдельной странице?
wincloa
wincloa 11 мая 2014 13:54
Цитата: wincloa
меня

И есть ли какие-то ограничения в индексе? Я немного запутался с цифрой 500..
wincloa
wincloa 11 мая 2014 13:56
У меня есть 2 важных вопроса.
На сколько я понял, десятичные числа округляются. Для меня они очень важны при сортировке, можно ли их использовать?
И еще нужно что бы данный хак сортировал новоститолько на отдельной странице, это можно сделать?
ПафНутиЙ
ПафНутиЙ 12 мая 2014 00:29
wincloa,
десятичные округляются, ограничений по цифре нет.
500 - это как серединка просто.
на отдельной странице нельзя, только по всему сайту.

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

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

Информация

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