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

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

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

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

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

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

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

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

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

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

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

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

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #45 : 21 Марта 2016, 13:33:47 »
Можно воспользоваться сортировкой на уровне xslt, но для этого нужно иметь все товары на выходе.
Немного не понял, что подразумевает "на уровне xslt".  Допустим получать сразу из кастома весь перечень объектов, а потом этот результат передавать в другой макрос для сортировки?
Ну XSLT же позволяет манипулировать данными и решать такие задачи, как сортировка.
Но всё же более правильным было бы разобраться в логике работы сайта, как формируются, забить это всё отдельным полем и по нему отфильтровать.

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Selector order по полю цены
« Ответ #46 : 21 Марта 2016, 13:57:32 »
Речь идет об этом: http://www.w3schools.com/xsl/xsl_sort.asp

В таком случае нет нужды передавать куда-то объекты для сортировки - они будут сортироваться при выводе.
Мой блог http://umicms.me

*

Seintero

  • *
  • 25
  • +0/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #47 : 22 Марта 2016, 13:17:26 »
Можно воспользоваться сортировкой на уровне xslt, но для этого нужно иметь все товары на выходе.
Немного не понял, что подразумевает "на уровне xslt".  Допустим получать сразу из кастома весь перечень объектов, а потом этот результат передавать в другой макрос для сортировки?
Ну XSLT же позволяет манипулировать данными и решать такие задачи, как сортировка.
Но всё же более правильным было бы разобраться в логике работы сайта, как формируются, забить это всё отдельным полем и по нему отфильтровать.
Речь идет об этом: http://www.w3schools.com/xsl/xsl_sort.asp

В таком случае нет нужды передавать куда-то объекты для сортировки - они будут сортироваться при выводе.
Благодарю, ознакомился со справкой по этому моменту. Попробовал отказаться от кастома и реализовать через стандартный getObjectsList (чтобы как вы сказали получить весь список объектов)... но.. почему-то выдалось точно в таком же неправильном порядке.
Привожу примеры кода, как я делал. Вот так мне выдало идентичный результат с сортировкой кастома:
  <xsl:apply-templates select="document('udata://catalog/getObjectsList/void////100/price/')/udata">			
<xsl:sort order="ascending" select=".//property[@name = 'price']/value" data-type="number"/>
   </xsl:apply-templates>
Тогда я подумал может идёт конфликт с указанным полем для сортировки и убрал его,но выдача стала ещё хаотичнее.
   <xsl:apply-templates select="document('udata://catalog/getObjectsList/void////100//')/udata">				
<xsl:sort order="ascending" select=".//property[@name = 'price']/value" data-type="number"/>
   </xsl:apply-templates>

Я что-то делаю не так? На первый взгляд всё правильно..

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Selector order по полю цены
« Ответ #48 : 22 Марта 2016, 14:49:08 »
Ну я бы предположил, что бессмысленно сортировать udata - он один :-)

apply-templates - означает буквально "применить шаблон к какому-то тегу". sort - говорит о том, что сотрировать нужно тот тег, к которому применяется шаблон. Выберите что вы хотите сортировать и это сортируйте. Но для этого и делайте apply-templates
Мой блог http://umicms.me

*

Seintero

  • *
  • 25
  • +0/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #49 : 23 Марта 2016, 16:18:01 »
Ну я бы предположил, что бессмысленно сортировать udata - он один :-)

apply-templates - означает буквально "применить шаблон к какому-то тегу". sort - говорит о том, что сотрировать нужно тот тег, к которому применяется шаблон. Выберите что вы хотите сортировать и это сортируйте. Но для этого и делайте apply-templates
Огромное спасибо за пояснение, наконец-то мы победили сортировку!!! Даже немного обидно, когда решение такой длительной проблемы занимает две строчки! :)  Вот так заработало:
 <xsl:if test="$sort='price'">	 
<xsl:apply-templates select="item" mode="catalog_item">   
<xsl:sort order="ascending" select="document(concat('upage://',@id))//property[@name = 'price']/value" data-type="number"/>
  </xsl:apply-templates>
Но вы будете смеяться... у меня ещё один ступор возник здесь же. Воодушевившись сразу начал клеить фильтр в зависимости от параметра. А именно в index.xsl, создал переменную <xsl:param name="sort" select="id"/> .... если верить документации таким образом переменной сразу задаётся значение же? Но у меня, когда я проверяю случай, что переменная sort не задана пользователем..... ничего не происходит, переменной этой будто не существует, значений нет. Но если переменная задана пользователем(/?sort=price), тогда всё работает... странно, опять что-то не так делаю?  :((
Попробовал отловить её в переменную другую и если пусто выводить ноль, но тоже не отловилось значение...
	<xsl:variable name="filparam" select="$sort"/>
<xsl:if test="$filparam=''">  <xsl:variable name="filparam" select="0"/>  </xsl:if>
<xsl:value-of select="$filparam"/>
Возникла пока идея может через кастом получится отловить переменную.. но терзают сомнения, ведь в документалке то без кастома просто получали... )))

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Selector order по полю цены
« Ответ #50 : 23 Марта 2016, 16:41:17 »
Надо писать select="'id'"
Поясняю подробнее с лишними пробелами:
select = " ' id ' "
Итоговый вариант будет
<xsl:param name="sort" select="'id'"/>

Просто select="id" означает "выбрать значение из тега id"
А select="'id'" означает "выбрать текстовый литерал 'id' "
Мой блог http://umicms.me

*

Seintero

  • *
  • 25
  • +0/-0
    • Просмотр профиля
Re: Selector order по полю цены
« Ответ #51 : 24 Марта 2016, 16:27:27 »
Надо писать select="'id'"
Поясняю подробнее с лишними пробелами:
select = " ' id ' "
Итоговый вариант будет
<xsl:param name="sort" select="'id'"/>

Просто select="id" означает "выбрать значение из тега id"
А select="'id'" означает "выбрать текстовый литерал 'id' "
Благодарю за пояснение, теперь взглянул иначе на происходящее :)

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Selector order по полю цены
« Ответ #52 : 25 Марта 2016, 11:13:44 »
Всегда пожалуйста :-)
Мой блог http://umicms.me