UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: sam от 22 Апреля 2015, 10:58:59

Название: Условия доставки в зависимости от стоимости товара
Отправлено: sam от 22 Апреля 2015, 10:58:59
Здравствуйте! Хотим указать в .../modules/catalog/object-view.xsl условия доставки ("доставка ?! руб.", "бесплатная доставка"). Ниже код, подскажите, как правильно сделать проверку, чтобы, если стоимость товара 15.000 руб. и больше, то "бесплатная доставка", а если меньше 15.000 руб., то "доставка ?! руб.".

<xsl:choose>
<xsl:when test="здесь условие для проверки - данные по стоимости товара должны браться из udata://emarket/price/">
Бесплатная доставка
</xsl:when>
<xsl:otherwise>
Доставка ?! руб.
</xsl:otherwise>
</xsl:choose>
Название: Re: Условия доставки в зависимости от стоимости товара
Отправлено: admin от 22 Апреля 2015, 18:54:34
это слишком просто)
наберите в адресной строке http://вашсайт/udata://emarket/price/id_вашего_товара и увидите xml который возвращает данный макрос. Там будет видно какой путь нужно прописать к цене (или посмотрите описание в документации http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/internetmagazin/emarket_price/#xslt-templating)
Название: Re: Условия доставки в зависимости от стоимости товара
Отправлено: sam от 22 Апреля 2015, 20:02:48
Суть вопроса не в том, какой путь указать, а как проверить, что именно "value" этого самого "price" выводит, т.е. какое значение? И если это значение превышает 15.000 руб., то выводить "бесплатная доставка". Знаю, что надо создавать переменную объявив её в шаблоне, а затем указать в этой переменной нужное значение для проверки:

<xsl:variable name="item_price" select="document(concat('udata://emarket/price/', page/@id))" />
<xsl:choose>
<!-- если значение $item_price больше или равно (не меньше) 15.000 руб. -->
<xsl:when test="$item_price >= 15000">
Бесплатная доставка
</xsl:when>
<xsl:otherwise>
Доставка ?! руб.
</xsl:otherwise>
</xsl:choose>

Моё условие может быть неверной, но суть вопроса раскрывает. Просьба подсказать, как правильно написать, если я сам написал неверное проверочное условие? Если все верно за исключением чего-то одного, подправьте, пожалуйста.
Название: Re: Условия доставки в зависимости от стоимости товара
Отправлено: admin от 23 Апреля 2015, 13:56:05
необязательно помещать в переменную, но суть верна, только нельзя использовать знак больше меньше в явном виде, надо использовать &gt; и &lt;
<xsl:choose>
<!-- если значение $item_price больше или равно (не меньше) 15.000 руб. -->
<xsl:when test="document(concat('udata://emarket/price/', page/@id,'//0'))/udata/price/actual &gt;= 15000">
Бесплатная доставка
</xsl:when>
<xsl:otherwise>
Доставка ?! руб.
</xsl:otherwise>
</xsl:choose>

P.S. обратите внимание на последний параметр при вызове emarket/price и почитайте в документации зачем он нужен... советую использовать везде, где не нужны валюты.
Название: Re: Условия доставки в зависимости от стоимости товара
Отправлено: sam от 23 Апреля 2015, 22:18:30
Главное, что мне удалось суть вопроса Вам передать, и в результате мы реализовали очередную задумку. Просто я не знал, как ссылаться к номиналу/значению цены (т.е. сюда - "document(concat('udata://emarket/price/', page/@id,'//0'))/udata/price/actual"). Все реализовано и работает, как и ожидалось. Знаете общаясь с Вами я все больше убеждаюсь в том, что Вы ПРОФИ с большой буквы, и мало того, стараетесь, чтобы Ваши собеседники соответствовали Вашему уровню (что очень редко, но иногда возможно).

В очередной раз примите мою искреннюю благодарность за уделенное на этот вопрос время и помощь!

P.S. Видно, что "document(concat('udata://emarket/price/', page/@id,'//0'))/udata/price/actual" выводит значение актуальной цены без суффикса "руб", и проверка в нашем случае именно с этим значением.