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

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Rodogor

Страницы: [1] 2 3 ... 13
1
Шаблоны XSLT / Re: Selector order по полю цены
« : 21 Марта 2016, 13:33:47 »
Можно воспользоваться сортировкой на уровне xslt, но для этого нужно иметь все товары на выходе.
Немного не понял, что подразумевает "на уровне xslt".  Допустим получать сразу из кастома весь перечень объектов, а потом этот результат передавать в другой макрос для сортировки?
Ну XSLT же позволяет манипулировать данными и решать такие задачи, как сортировка.
Но всё же более правильным было бы разобраться в логике работы сайта, как формируются, забить это всё отдельным полем и по нему отфильтровать.

2
Не могу понять как выводить уровни в этом xsl, капец какой-то...
Кто это придумал блин :(
Как так вообще вышло что платная CMS не имеет готового шаблона вывода HTML карты..

http://24telecom.siterestart.ru/udata://content/sitemap
Я хочу эту карту вывести многоуровневым списком что бы было понятно где родительская, а где дочерняя страницы, но не выходит..


Как определять уровень вложенности item не понятно и не понятно где и как про это искать в примере с меню по другому...

Ну все кто сталкивались с UMI, знают, что почти всё приходиться делать руками.
Это как продукция автоваза - спустя какое-то время становишься автомехаником, а c UMI - как минимум продвинуто-задвинутым пользователем, а то и программистом

3
Шаблоны XSLT / Re: Selector order по полю цены
« : 14 Марта 2016, 15:32:35 »
Я когда в такие блудняки попадаю - возвращаются к самому началу и ещё раз проверяю.

Советую сделать следующее: сделать ещё одно поле типа цена и для 5 выбранных товаров задать цены в новом поле.
Убедиться, что отсортировалось как надо - это будет говорить о том, что механизм выборок работает корректно, в базу всё записывается как надо и т.п..

После этого взял бы 5 товаров, которые не сортируются по нужному полю и прописал бы им руками тестовые цены и проверил бы - отсортируются или нет..

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

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

5
Странно, вроде всё ровно и должно работать.

Я бы начал вот что делать:

0. Убедиться, что нет другого шаблона mode="sitemap" для udata://content/sitemap для item "с более высоким приоритетом", который возможно срабатывает. заменить mode="sitemap" на mode="sitemap222" в вызове шаблона и в описание шаблона
1. <xsl:copy-of select="document('udata://content/sitemap')/udata"/> - убедиться, что там точно что-то есть.
2. Начал бы разбираться последовательно:

!!!<xsl:apply-templates select="document('udata://content/sitemap')/udata" mode="sitemap222"/>!!!

<xsl:template match="udata[@method='sitemap']" mode="sitemap222">
...udata...
<xsl:apply-templates select="items" mode="sitemap222"/>
</xsl:template>

<xsl:template match="udata[@method='sitemap']//items" mode="sitemap222">
...items...
<xsl:apply-templates select="item" mode="sitemap222"/>
</xsl:template>

<xsl:template match="udata[@method='sitemap']//item" mode="sitemap222">
...item...
<xsl:apply-templates select="items" mode="sitemap222"/>
</xsl:template>
И затем бы начал анализировать то, что выводится



P.S.
Лично я не пользуюсь такой формой записи
<xsl:template match="//item" mode="sitemap">

и записал бы это вот так
<xsl:template match="item" mode="sitemap">

Не исключено, что //item - корректный способ.

6
Копать в сторону валидации заполнения полей на JS/JQUERY.

В стандартных шаблонах есть подобная валидация, поиском по JS файлам можно попробовать найти site.forms.errors.check (в разных версиях и шаблонах этот файл может находиться в разных местах. один из вариантов - /templates/template/js/forms.js , другой вариант  /js/client/...)

7
Шаблоны XSLT / Re: Selector order по полю цены
« : 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)) : '';
        }
Хороший подход. Профессионально :)

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

9
Шаблоны XSLT / Re: Selector order по полю цены
« : 10 Марта 2016, 15:14:13 »
Проверить, отсортирует ли он конкретно эти товары, если принудительно указать страницы для сортировки.

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

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

11
Шаблоны XSLT / Re: Selector order по полю цены
« : 10 Марта 2016, 14:16:44 »
Замена кода ни к чему не привела?
Много типов откуда создаётся - из 1с? Возможность пересоздать их есть?

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

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

13
Шаблоны XSLT / Re: Selector order по полю цены
« : 10 Марта 2016, 12:29:05 »
А случайно поле PRICE не удалялось в шаблонах данных, после чего было отдельно созданным для каждого типа? Идентификатор поля одинаковый для всех типов данных?

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

15
Шаблоны XSLT / Re: Selector order по полю цены
« : 10 Марта 2016, 12:02:48 »
Попробуйте так:

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

Страницы: [1] 2 3 ... 13