Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

0 Пользователей и 1 Гость просматривают эту тему.

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Здравствуйте, натолкните пожалуйста на мысль. А то вообще никаких идей((
Необходимо отсортировать вывод объектов каталога по определенному полю. При том что объекты с разными типами данных. И в каждом типе данных свое поле по которому их надо сортировать в каталоге. В каком классе хотябы эта сортировка идет?
Заранее благодарна.

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
Re:Сортировка объектов каталога вадминке
« Ответ #1 : 04 Октября 2013, 18:15:55 »
если интересует механизм сортировки, то его код в файле /classes/system/utils/pagenum/pagenum.php (функция generateOrderBy) вызывается из файл /classes/modules/system.php в функции order_by.

если интересно как сделать разные сортировки, то тут важно понимать как она в umi работает.

при выводе товаров система пытается подхватит параметры из адресной строки вида order_filter[имя_поля]=направление_сортировки.
Поэтому ваша задача делиться на 2 части, передать в адресную строку соответствующий параметр и начиться выводить соответствующую ссылку (или форму) которая передастся в адресную строку параметр сортировки не поломав уже имеющиеся там параметры (фильтры и другие сортировки).

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

Мне обычно хватает модифицированного umi решения, которое я дописывал под свои нужды и которое выложено в статье  Создание двухсторонней сортировки order_by для xslt шаблонов
« Последнее редактирование: 04 Октября 2013, 18:22:12 от admin »

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:Сортировка объектов каталога вадминке
« Ответ #2 : 07 Октября 2013, 09:51:28 »
Это наверное чуть не то... но посмотрю generateOrderBy.. возможно что-то возьму для  себя...
мне нужно в самой админке чтобы объекты сортировались по нужным полям.

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:Сортировка объектов каталога вадминке
« Ответ #3 : 07 Октября 2013, 11:53:45 »
Вот еще вопрос возник... можно ли как то объеденить выборки?

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
Re:Сортировка объектов каталога вадминке
« Ответ #4 : 07 Октября 2013, 14:00:09 »
если мы говорим про админку, то тогда вопрос у вас свой модуль или вы хотите сделать сортировку в уже существующем в umi модуле, например в каталоге?

P.S. Если можно опишите развернуто что именно вам требуется сделать, чтобы было проще понимать какая у вас ситуация

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:Сортировка объектов каталога вадминке
« Ответ #5 : 08 Октября 2013, 14:25:15 »
да.. я хочу в уже существующем модуле сделать сортировку...
Есть модуль каталог. В нем созданы 3 каталога. в каждом каталоге свои типы объектов каталогов.
в первом каталоге - объекты первого типа. Сортируются по полю Дата регистарции.
во втором каталоге - объекты второго типа. Сортируются по полю Дата принятия.
в третьем каталоге - объекты третьего типа. Их вообще можно не сортировать.
И в каждом этом типе свои поля. Т.е. у второго типа нет поля Дата регистрации. У него вместо него дата принятия. А в третьем вообще таких полей нет.

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
Re:Сортировка объектов каталога вадминке
« Ответ #6 : 08 Октября 2013, 17:05:42 »
посмотрите в firebug при раскрытии разделов, там будет видно что подразделы раскрываются ajax запросом, который умеет принимать кучу параметров, в том числе и сортировки.

Вопрос как этот запрос редактировать, пока не ясен.

Js переписывать не очень хочется она перезатрется при обновлении.

Можно подумать в сторону кастомизации данного модуля, добавив него доп. вкладок. Каждая вкладка будет для своего раздела и там на уровне php при формировании xml для данной вкладки можно поменять сортировку. Правда и тут, скорее всего, не обойтись без редактирования системных файлов модуля.

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

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:Сортировка объектов каталога вадминке
« Ответ #7 : 10 Октября 2013, 16:02:50 »
оказалось все как-то просто)))
написала функцияю:
static function dateRegistration(selector $sel) {
         $sel->types('object-type')->id(137);
         $sel->types('object-type')->id(138);
         $sel->order('data_registracii')->desc();
      }

и вставила ее выполняться в public function tree():
после применения фильтров к выборке
self::dateRegistration($sel);

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
Re:Сортировка объектов каталога вадминке
« Ответ #8 : 10 Октября 2013, 17:10:29 »
Системные файлы правили? Не боитесь что перезатрутся ваши труды при очередном обновлении системы?

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:Сортировка объектов каталога вадминке
« Ответ #9 : 11 Октября 2013, 09:39:26 »
не.. я в custom_adm прописала...