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

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

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

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

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

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

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

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

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

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

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

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

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Selector order по полю цены
« Ответ #15 : 10 Марта 2016, 14:18:11 »
А может какая-то проблема с версией ЮМИ? Давно обновлялись?
Мой блог http://umicms.me

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #16 : 10 Марта 2016, 14:51:10 »
Не могу вспомнить из-за какого именно глюка, но может бы и из-за этого, я делал такую штуку: первая выборка формировала мне все идентификаторы страниц, которые в неё попадают, а вторая - сортировала.
Советую попробовать сделать ещё одну проверку - взять из выборки 3-4-5 товаров, которые явно не могут правильно отсортироваться и добавить в выборку поиск только по этим идентификаторам.

*

Seintero

  • *
  • 25
  • +0/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #17 : 10 Марта 2016, 15:11:42 »
А может какая-то проблема с версией ЮМИ? Давно обновлялись?
2.11 , последнее обновление в сентябре того года..

Не могу вспомнить из-за какого именно глюка, но может бы и из-за этого, я делал такую штуку: первая выборка формировала мне все идентификаторы страниц, которые в неё попадают, а вторая - сортировала.
Советую попробовать сделать ещё одну проверку - взять из выборки 3-4-5 товаров, которые явно не могут правильно отсортироваться и добавить в выборку поиск только по этим идентификаторам.
Не совсем понял.. взять на выбор несколько из "не попадающих в строй" товаров и добавить их тип данных? или проверить отсортирует ли он конкретные эти товары?

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #18 : 10 Марта 2016, 15:14:13 »
Проверить, отсортирует ли он конкретно эти товары, если принудительно указать страницы для сортировки.

$sel->where('id')->equals(array(666,777,888,999));

*

Seintero

  • *
  • 25
  • +0/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #19 : 10 Марта 2016, 15:33:37 »
Проверить, отсортирует ли он конкретно эти товары, если принудительно указать страницы для сортировки.

$sel->where('id')->equals(array(666,777,888,999));

Да, выбрал 5 товаров... упростил максимально выборку для теста и... ничего не изменилось, порядка в этом беспорядке цен не нашлось :)
$sel = new selector('pages');
  $sel->types('hierarchy-type')->name('catalog', 'object');
   $sel->where('id')->equals(array(190029,205049,191501,189822,190388));
 $sel->order('price')->asc();

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #20 : 10 Марта 2016, 15:41:25 »
Тогда я бы так действовал:
1. Полностью заменить код SELECTOR-а с другого проекта.
2. Попробовать проанализировать формируемый SQL-запрос через $sel->query() и базу данных.
Пару раз удавалось дать ладу путём сравнения с другим "эталонным" сайтом, на котором всё работало.

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Re: Selector order по полю цены
« Ответ #21 : 10 Марта 2016, 16:25:05 »
Выведите все объектные типы данных http://api.docs.umi-cms.ru/spravochnik_po_klassam_yadra_umicms/model_dannyh/umiobjecttypescollection/gettypesbyhierarchytypeid/ , которые связаны с иерархическим типом данных 'catalog', 'object'. Затем проверьте, чтобы во всех этих типах было поле цена.

Что-то вроде:
public function checkCatalogObjectTypes() {
            $hierarchyTypeId = umiHierarchyTypesCollection::getInstance()->getTypeByName('catalog', 'object')->getId();

            $objectTypesCollection = umiObjectTypesCollection::getInstance();

            $objectTypes = $objectTypesCollection->getTypesByHierarchyTypeId($hierarchyTypeId);

            $errors = array();

            foreach($objectTypes as $id => $name) {
                $type = $objectTypesCollection->getType($id);

                /* @var umiObjectType $type*/

                $field = $type->getFieldId('price');

                if(!$field) {
                    $errors[] = array(
                        'attribute:id' => $id,
                        'attribute:name' => $name
                    );
                }
            }

            return count($errors) ? array('items' => array('nodes:item' => $errors)) : '';
        }
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

aghigay

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

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #23 : 10 Марта 2016, 16:28:09 »
Выведите все объектные типы данных http://api.docs.umi-cms.ru/spravochnik_po_klassam_yadra_umicms/model_dannyh/umiobjecttypescollection/gettypesbyhierarchytypeid/ , которые связаны с иерархическим типом данных 'catalog', 'object'. Затем проверьте, чтобы во всех этих типах было поле цена.

Что-то вроде:
public function checkCatalogObjectTypes() {
            $hierarchyTypeId = umiHierarchyTypesCollection::getInstance()->getTypeByName('catalog', 'object')->getId();

            $objectTypesCollection = umiObjectTypesCollection::getInstance();

            $objectTypes = $objectTypesCollection->getTypesByHierarchyTypeId($hierarchyTypeId);

            $errors = array();

            foreach($objectTypes as $id => $name) {
                $type = $objectTypesCollection->getType($id);

                /* @var umiObjectType $type*/

                $field = $type->getFieldId('price');

                if(!$field) {
                    $errors[] = array(
                        'attribute:id' => $id,
                        'attribute:name' => $name
                    );
                }
            }

            return count($errors) ? array('items' => array('nodes:item' => $errors)) : '';
        }
Хороший подход. Профессионально :)

*

Seintero

  • *
  • 25
  • +0/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #24 : 10 Марта 2016, 17:06:25 »
Выведите все объектные типы данных http://api.docs.umi-cms.ru/spravochnik_po_klassam_yadra_umicms/model_dannyh/umiobjecttypescollection/gettypesbyhierarchytypeid/ , которые связаны с иерархическим типом данных 'catalog', 'object'. Затем проверьте, чтобы во всех этих типах было поле цена.

Что-то вроде:
public function checkCatalogObjectTypes() {
            $hierarchyTypeId = umiHierarchyTypesCollection::getInstance()->getTypeByName('catalog', 'object')->getId();

            $objectTypesCollection = umiObjectTypesCollection::getInstance();

            $objectTypes = $objectTypesCollection->getTypesByHierarchyTypeId($hierarchyTypeId);

            $errors = array();

            foreach($objectTypes as $id => $name) {
                $type = $objectTypesCollection->getType($id);

                /* @var umiObjectType $type*/

                $field = $type->getFieldId('price');

                if(!$field) {
                    $errors[] = array(
                        'attribute:id' => $id,
                        'attribute:name' => $name
                    );
                }
            }

            return count($errors) ? array('items' => array('nodes:item' => $errors)) : '';
        }

Действительно интересный ход, благодарю за подсказку! После проверки оказалось, что поле цены есть у всех. Мистика какая-то.

А можно query в студию?
Если рассматривать сортировку по 5 товарам,
$sel = new selector('pages');
  $sel->types('hierarchy-type')->name('catalog', 'object');
   $sel->where('id')->equals(array(190029,205049,191501,189822,190388));
 $sel->order('price')->asc();
то query соответсвенно такой
SELECT DISTINCT SQL_CALC_FOUND_ROWS h.id as id, h.rel as pid FROM cms3_hierarchy h, cms3_permissions p, cms3_objects o LEFT JOIN cms3_object_content oc_268_lj ON oc_268_lj.obj_id=o.id AND oc_268_lj.field_id = '268' WHERE h.type_id IN (55) AND h.domain_id = '1' AND h.lang_id = '1' AND h.is_deleted = '0' AND h.is_active = '1' AND h.id IN('190029', '205049', '191501', '189822', '190388') AND (p.rel_id = h.id AND p.level & 1 AND p.owner_id IN(13)) AND h.obj_id = o.id ORDER BY oc_268_lj.float_val ASC, h.ord ASC
Поле 268 совпадает по id, пробегался по базе на наличие может быть каких-нибудь других одноименных полей.. но нет.. 

*

aghigay

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

*

Seintero

  • *
  • 25
  • +0/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #26 : 11 Марта 2016, 16:36:26 »
Я бы предположил, что поле цены вдруг неожиданно стало не float_val, а чем-то другим. Например, строкой. В этом случае указанная сортировка работать не будет. Возможно это не во всех объектах, а только в некоторых - рекомендую это проверить. По-умолчанию у price тип данных price
Так... если смотреть в шаблонах данных в разные типы данных,то там у цены написано price. Или это где-то ещё смотреть надо? Другой вопрос...если оно должно быть price,откуда тогда взялось float_val в запросе? или это нормально?

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #27 : 11 Марта 2016, 16:42:11 »
Я бы предположил, что поле цены вдруг неожиданно стало не float_val, а чем-то другим. Например, строкой. В этом случае указанная сортировка работать не будет. Возможно это не во всех объектах, а только в некоторых - рекомендую это проверить. По-умолчанию у price тип данных price
Так... если смотреть в шаблонах данных в разные типы данных,то там у цены написано price. Или это где-то ещё смотреть надо? Другой вопрос...если оно должно быть price,откуда тогда взялось float_val в запросе? или это нормально?

Уровень SQL запросов "более низкий", чем уровень админки UMI. Тут имеется в виду, что это поле определённой таблицы
Скриншот для наглядности -

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Selector order по полю цены
« Ответ #28 : 11 Марта 2016, 16:49:25 »
Я бы предположил, что поле цены вдруг неожиданно стало не float_val, а чем-то другим. Например, строкой. В этом случае указанная сортировка работать не будет. Возможно это не во всех объектах, а только в некоторых - рекомендую это проверить. По-умолчанию у price тип данных price
Так... если смотреть в шаблонах данных в разные типы данных,то там у цены написано price. Или это где-то ещё смотреть надо? Другой вопрос...если оно должно быть price,откуда тогда взялось float_val в запросе? или это нормально?


Если стоит price - то, скорее всего, цена находится в правильном поле и мой вариант не подходит.

Попробуйте выполнить сформированный в query скрипт просто в phpMyAdmin - нужно посмотреть на результат выполнения и на то, соответствует ли это указанным правилам сортировки или нет.
Мой блог http://umicms.me

*

Seintero

  • *
  • 25
  • +0/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #29 : 11 Марта 2016, 17:04:42 »
Цитировать
Попробуйте выполнить сформированный в query скрипт просто в phpMyAdmin - нужно посмотреть на результат выполнения и на то, соответствует ли это указанным правилам сортировки или нет.
Да, я пробовал вчера отсылать sql в phpMyAdmin,но к моему удивлению выдавались идентичные результаты.
Цитировать
Если стоит price - то, скорее всего, цена находится в правильном поле и мой вариант не подходит.
Цитировать
Уровень SQL запросов "более низкий", чем уровень админки UMI. Тут имеется в виду, что это поле определённой таблицы
Скриншот для наглядности -
Если смотреть в cms3_object_fields таблице, то у цены field_type_id равен 10 и равен соответсвенно в таблице cms3_object_field_types price. Но так как вы предоставили скриншот другой таблицы, я и там прогнал на всякий случай.. :))) cms3_object_content   указав в field_id id поля цены... float_val или заполнено или нет, но другие поля всегда пусты.