Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Динамическое изменение цены при выборе опционального свойства.

Автор denis_savinРаздел Шаблоны TPL

Ответов: 7
Просмотров: 8095
Последний ответ 18 Марта 2014, 18:45:34
от ilyar
Динамическое обновление цены при выборе количества товара

Автор johnРаздел JS и AJAX

Ответов: 1
Просмотров: 4854
Последний ответ 08 Августа 2014, 00:01:13
от admin
Подскажите, пожалуйста, как вывести подсказку в зависимости от цены

Автор nitoitiРаздел Макросы UMI.CMS

Ответов: 1
Просмотров: 3226
Последний ответ 04 Ноября 2014, 19:56:24
от nitoiti
JS+AJAX - формат цены без суффикса и префикса

Автор samРаздел JS и AJAX

Ответов: 3
Просмотров: 3486
Последний ответ 20 Октября 2014, 00:45:31
от sam
Цены в разных валютах. Проблемы и странности

Автор crazygeorgioРаздел Custom макросы

Ответов: 0
Просмотров: 1622
Последний ответ 03 Октября 2015, 03:22:49
от crazygeorgio

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

*

Seintero

  • *
  • 25
  • +0/-0
    • Просмотр профиля
Selector order по полю цены
« : 10 Марта 2016, 11:56:28 »
Всем привет! Не могу понять, есть классическая проблема - мне надо отсортировать объекты нескольких каталогов сразу по одному полю (когда например у каталога куча подкаталогов сразу). Соответсвенно пишу кастомную выборку с помощью Selector и свято верю,что это решит проблему ... но она почему-то так же не срабатывает! Всё равно товары идут вразнобой. Может быть я что-то забыл добавить? Пробовал и типы указывать разные и уже с самим запросом Sql играться в базе...ничего не пойму, всё равно не сортирует.
 $sel = new selector('pages');
  $sel->types('hierarchy-type')->name('catalog', 'object');
   //$sel->types('object-type')->id(78); 
  // $sel->types('object-type')->id(1101); $sel->types('object-type')->id(1094);
  $sel->where('hierarchy')->page($cat_id)->childs(100);
 $sel->order('price')->asc();
  foreach ($sel->result as $item){  ..... /*типичная отрисовка эл-ов*/ }

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #1 : 10 Марта 2016, 12:02:48 »
Попробуйте так:

 $sel->order('price')->asc(true);

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Selector order по полю цены
« Ответ #2 : 10 Марта 2016, 12:19:28 »
А точно у них заполнено поле price? Есть варианты, когда итоговая цена на товар формируется на лету, с учетом скидок, наценок, курса валют и все такое. Может это как раз тот случай?
Мой блог http://umicms.me

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #3 : 10 Марта 2016, 12:21:31 »
А точно у них заполнено поле price? Есть варианты, когда итоговая цена на товар формируется на лету, с учетом скидок, наценок, курса валют и все такое. Может это как раз тот случай?
Здравая идея, но думаю, что в "/*типичная отрисовка эл-ов*/" выводится именно поле price и там оно как зря. :)

*

Seintero

  • *
  • 25
  • +0/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #4 : 10 Марта 2016, 12:24:24 »
Попробуйте так:

 $sel->order('price')->asc(true);
К сожалению результат не изменился :( Странно. Совсем недавно у меня уже была проблема с "множеством типов данных", я пытался получить объекты, у которых есть определённое заполненное поле.. Usel не справился с выборкой, именно из-за множества типов... но когда переклеил через Selector всё сработало. Столкнувшись сейчас с сортировкой "по нескольким типам", я думал, что Selector так же справится с задачей...

Цитировать
А точно у них заполнено поле price? Есть варианты, когда итоговая цена на товар формируется на лету, с учетом скидок, наценок, курса валют и все такое. Может это как раз тот случай?
Нет-нет, поле price заполнено, перепроверял. Товар с ценой 1400(к-й почему-то больше) и ценой 1800 (к-й считается меньше), отличаются только типами данных.. 

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #5 : 10 Марта 2016, 12:29:05 »
А случайно поле PRICE не удалялось в шаблонах данных, после чего было отдельно созданным для каждого типа? Идентификатор поля одинаковый для всех типов данных?

*

Seintero

  • *
  • 25
  • +0/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #6 : 10 Марта 2016, 12:33:31 »
А случайно поле PRICE не удалялось в шаблонах данных, после чего было отдельно созданным для каждого типа? Идентификатор поля одинаковый для всех типов данных?
Это я проверил в первую очередь - id поля одинаковое.. смотрел запрос,который строит selector в выборке тоже правильный id использует..

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Selector order по полю цены
« Ответ #7 : 10 Марта 2016, 12:42:02 »
А точно проверяется итоговая выборка, а не результат вывода на сайт? А то может быть вариант, что результат вывода дополнительно подвергается сортировке и конечно тут первоначальная выборка уже не действует?
Ну или, как вариант, может быть выборка делается несколько раз и после этого собирается воедино? Тогда могут быть любые грабли
Мой блог http://umicms.me

*

Seintero

  • *
  • 25
  • +0/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #8 : 10 Марта 2016, 12:49:42 »
А точно проверяется итоговая выборка, а не результат вывода на сайт? А то может быть вариант, что результат вывода дополнительно подвергается сортировке и конечно тут первоначальная выборка уже не действует?
Ну или, как вариант, может быть выборка делается несколько раз и после этого собирается воедино? Тогда могут быть любые грабли
Нет, это единственная выборка. В неё передаётся параметр для сортировки, в случае её необходимости. По идее такой вызов должен исключать сторонние сортировки на странице сайта  http://сайт.ru/udata://catalog/кастом/  или я ошибаюсь? Результат одинаков в обоих случаях выходит.. как на сайте,так и по отдельному пути..

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Selector order по полю цены
« Ответ #9 : 10 Марта 2016, 12:55:09 »
Предлагаю дополнить результат выводом реального значения поля price и посмотреть на итог
Мой блог http://umicms.me

*

Seintero

  • *
  • 25
  • +0/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #10 : 10 Марта 2016, 13:00:10 »
Предлагаю дополнить результат выводом реального значения поля price и посмотреть на итог
Немного не понял. Пользователь Rodogor сказал истину, у меня уже выводится поле price в атрибутах, для удобства отладки...или речь о чём-то другом ?:) Предлагаю кусочек кода
<item id="189544" link="/eshop/bra/klassika/04408_luiza/" price="1860" xlink:href="upage://189544" alt_name="04408">04408</item>
<item id="189885" link="/eshop/bra/klassika/12001_1w/" price="1400" xlink:href="upage://189885" alt_name="12001">12001/1W</item>

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #11 : 10 Марта 2016, 13:01:29 »
Кажется у меня подобное бывало - но я не помню как решал проблему.
Думаю, что я бы пошёл по такому пути:
0. Убедиться, что дело не в кэширование - выгрузка меняется, если отфильтровать по какому-нибудь значению/родителю/типу
1. Убедиться, что дело не в конкретном поле - попробовать отсортировать по другому полю.
2. Убедиться, что сортировка вообще работает - отсортировать объекты одного типа данных.
3. Убедиться, что сортировка объектов по нескольким типов данных по общему полю работает. Сначала проверить на других типах данных (или вновь созданных), затем постепенно перемещаться к тем типам, с которым не работает.
4. Воссоздал бы ситуацию на другом сайте

Ну и потом я бы попробовал заменить всё связанное с этим классом файлами из другого, заведомо рабочего проекта

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Selector order по полю цены
« Ответ #12 : 10 Марта 2016, 13:03:04 »
Согласен с Rodogor
Мой блог http://umicms.me

*

Seintero

  • *
  • 25
  • +0/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #13 : 10 Марта 2016, 13:47:56 »
Кажется у меня подобное бывало - но я не помню как решал проблему.
Думаю, что я бы пошёл по такому пути:
0. Убедиться, что дело не в кэширование - выгрузка меняется, если отфильтровать по какому-нибудь значению/родителю/типу
1. Убедиться, что дело не в конкретном поле - попробовать отсортировать по другому полю.
2. Убедиться, что сортировка вообще работает - отсортировать объекты одного типа данных.
3. Убедиться, что сортировка объектов по нескольким типов данных по общему полю работает. Сначала проверить на других типах данных (или вновь созданных), затем постепенно перемещаться к тем типам, с которым не работает.
4. Воссоздал бы ситуацию на другом сайте

Ну и потом я бы попробовал заменить всё связанное с этим классом файлами из другого, заведомо рабочего проекта
Дело в том, что имеется достаточно большое кол-во типов данных,чтобы проверять последовательно каждый.. что может исказить и воссоздание где-либо. Навскидку проверил - в рамках одного типа всё прекрасно. Т.е. сортировка сама по-себе работает. В рамках двух срабатывает.. но когда начинаю прыгать по каталогам, то (видимо эти типы не попадают) сбивается. Странно,что указав например как тип родителя типов (судя по сформированному запросу тогда перечисляются сразу все id типов-детей) тоже не срабатывает.  Кэш так же отключён..

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #14 : 10 Марта 2016, 14:16:44 »
Замена кода ни к чему не привела?
Много типов откуда создаётся - из 1с? Возможность пересоздать их есть?