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

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

*

sam

  • ***
  • 216
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Здравствуйте! Хотим указать в .../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>
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
это слишком просто)
наберите в адресной строке http://вашсайт/udata://emarket/price/id_вашего_товара и увидите xml который возвращает данный макрос. Там будет видно какой путь нужно прописать к цене (или посмотрите описание в документации http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/internetmagazin/emarket_price/#xslt-templating)

*

sam

  • ***
  • 216
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Суть вопроса не в том, какой путь указать, а как проверить, что именно "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>

Моё условие может быть неверной, но суть вопроса раскрывает. Просьба подсказать, как правильно написать, если я сам написал неверное проверочное условие? Если все верно за исключением чего-то одного, подправьте, пожалуйста.
« Последнее редактирование: 22 Апреля 2015, 22:26:15 от sam »
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
необязательно помещать в переменную, но суть верна, только нельзя использовать знак больше меньше в явном виде, надо использовать &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 и почитайте в документации зачем он нужен... советую использовать везде, где не нужны валюты.

*

sam

  • ***
  • 216
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Главное, что мне удалось суть вопроса Вам передать, и в результате мы реализовали очередную задумку. Просто я не знал, как ссылаться к номиналу/значению цены (т.е. сюда - "document(concat('udata://emarket/price/', page/@id,'//0'))/udata/price/actual"). Все реализовано и работает, как и ожидалось. Знаете общаясь с Вами я все больше убеждаюсь в том, что Вы ПРОФИ с большой буквы, и мало того, стараетесь, чтобы Ваши собеседники соответствовали Вашему уровню (что очень редко, но иногда возможно).

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

P.S. Видно, что "document(concat('udata://emarket/price/', page/@id,'//0'))/udata/price/actual" выводит значение актуальной цены без суффикса "руб", и проверка в нашем случае именно с этим значением.
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.