home

В каталоге ELiS теперь можно создавать собственные сортировки

sort-by-rating.png

До сих пор применялась следующая сортировка, жестко зашитая в код:

  • папки поднимаются в начало;
  • папки сортируются по рейтингу;
  • остальные ресурсы ниже папок тоже сортируются по рейтингу.

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

Чтобы сортировки были универсальными, они указываются в поле field_config. Т.о. сортировки наследуются по каталогу и могут в нужных местах переопределяться.

Также теперь внесено изменение в результате которого если у ноды каталога или у любого родителя не находится field_config, то поле field_config берется из корня каталога (ноды с синонимом "catalog").

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

Теперь собственно о сортировках.

Документация по сортировкам находится здесь: https://elibsystem.ru/docs/admin/fields.html#field-config-sort

Суть в том, что вместо задания одного единственного правила сортировки по одному полю, в ELiS можно задавать массив правил, которые применяются друг за другом и если любое правило при сортировке любых двух элементов срабатывает, то следующие не применяются, а если правило не может два элемента отсортировать, то берется следующее правило и пытается примениться оно. Дальше если второе правило сортировки не может выделить какой элемент будет раньше какого, к этим двум элементам применяется следующее правило сортировки и т.д.

Выглядеть массив правил сортировки может так: ["subj_top","rating", "childrens", "title"].

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

Или поднять папки вверх, отсортировать папки по числу вложенных элементов, а не папки по рейтингу.

Важно, что теперь изменилась сортировка по умолчанию. Если раньше вначале папки поднимались вверх, а затем шла сортировка по рейтингу, то теперь вверху будут ресурсы или папки с наибольшим рейтингом (т.е. ресурсы будут в перемешку с папками, у чего рейтинг больше - то и выше), а рейтинг папок рассчитывается как сумма рейтингов вложенных ресурсов. Такой подход лучше работает в ситуации, когда есть в папке очень популярные отдельные ресурсы.

Т.е. по умолчанию сортировка выражена так: ["rating", "childrens", "title"].

Пример для папки с сериальными изданиями: ["title_desc"] - сортировка по заглавию по убыванию.

sort-by-title-desc.png