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

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

*

rellai

  • **
  • 58
  • +5/-0
    • Просмотр профиля
Собственно как вывести информацию в карточке товара.
например название или срок действия скидки?

Нашел как вывести дату окончания скидки непосредственно
<xsl:value-of select="document('uobject://834.end_date')//value" />

но как узнать ид скидки, которая применена?

*

ilyar

  • ***
  • 128
  • +28/-0
  • UMI.CMS, Yii, Vagrant, BEM
    • Просмотр профиля
    • ilyar на toster
Собственно как вывести информацию в карточке товара.
например название или срок действия скидки?

Нашел как вывести дату окончания скидки непосредственно
<xsl:value-of select="document('uobject://834.end_date')//value" />

но как узнать ид скидки, которая применена?

%emarket price()% — Возвращает стоимость товара, а также информацию о скидке:

Код: XML [Выделить]

<udata element-id="68" module="emarket" method="price" generation-time="0.117425">
 <discount id="640" name="25% новогодняя скидка">
  <description>25% новогодняя скидка на все телевизоры</description>
 </discount>
 <price name="Российский рубль" rate="1" nominal="1" suffix="руб">
  <original>800</original>
  <actual>600</actual>
 </price>
 <currencies>
  <price>
   <original>800</original>
   <actual>600</actual>
  </price>
  <price name="Американский доллар" rate="31.5" nominal="1" prefix="$">
   <original>25.4</original>
   <actual>19.05</actual>
  </price>
  <price name="Евро" rate="35" nominal="1" prefix="€">
   <original>22.86</original>
   <actual>17.14</actual>
  </price>
 </currencies>
 <currency-prices>
  <items>
   <item name="Американский доллар" rate="31.5" nominal="1" prefix="$">
    <original>25.4</original>
    <actual>19.05</actual>
    <price-original>25.4</price-original>
    <price-actual>19.05</price-actual>
   </item>
   <item name="Евро" rate="35" nominal="1" prefix="€">
    <original>22.86</original>
    <actual>17.14</actual>
    <price-original>22.86</price-original>
    <price-actual>17.14</price-actual>
   </item>
  </items>
 </currency-prices>
</udata>

*

rellai

  • **
  • 58
  • +5/-0
    • Просмотр профиля
Спасибо за подсказку
<xsl:value-of select="document(concat('udata://emarket/price/',page/@id))" />   
   
сделал вот так а он выводит только цену....
без скидки и со скидкой для разных валют

Цитировать
.........
    18000
    14400
..........
 

*

ilyar

  • ***
  • 128
  • +28/-0
  • UMI.CMS, Yii, Vagrant, BEM
    • Просмотр профиля
    • ilyar на toster
Код: XSL [Выделить]


<!-- декларируем переменную $discountId равной id скидки, если есть -->
<xsl:variable name="discountId" select="document(concat('udata://emarket/price/',page/@id))/udata/discount/@id" />

<!-- выводим id скидки, если есть -->
<xsl:value-of select="document(concat('udata://emarket/price/',page/@id))/udata/discount/@id" />

<!-- применяем шаблон для скидки, если есть -->
<xsl:apply-templates select="document(concat('udata://emarket/price/',page/@id))/udata/discount" />

« Последнее редактирование: 22 Апрель 2014, 21:55:24 от ilyar »

*

rellai

  • **
  • 58
  • +5/-0
    • Просмотр профиля
Re:Как добавить информацию о скидке в карточ&
« Ответ #4 : 23 Апрель 2014, 08:40:34 »
Здорово! спасибо!
получил вот такой код
<xsl:variable name="discountId" select="document(concat('udata://emarket/price/',page/@id))/udata/discount/@id" />
<xsl:value-of select="document(concat('uobject://',$discountId,'.discount_rules_id'))/udata/property/value/item/@id" /> 
но в /udata/property/value/
находится 2 item
мне нужно получить тот который с name='dataRange'
а он выводит первый

все разобрался :))
<xsl:value-of select="document(concat('uobject://',$discountId,'.discount_rules_id'))/udata/property/value/item[@name='dateRange']/@id" />  
« Последнее редактирование: 23 Апрель 2014, 08:48:28 от rellai »

*

rellai

  • **
  • 58
  • +5/-0
    • Просмотр профиля
А еще вопрос хотел бы задать :))
а как мне перебрать все эти элементы
ну в цикле как бы?

*

ilyar

  • ***
  • 128
  • +28/-0
  • UMI.CMS, Yii, Vagrant, BEM
    • Просмотр профиля
    • ilyar на toster
А еще вопрос хотел бы задать :))
а как мне перебрать все эти элементы
ну в цикле как бы?

Постарайся формулировать более ясные вопросы, если хочешь получить нужный ответ.

Отвечу в общем. Как бы цикл это элементы xsl:for-each и xsl:apply-templates рекомендую использовать последний, пример:

Код: XML [Выделить]

<root_node>
  <item link="#" title="Some title">Some text</item>
  <item link="#" title="Some title">Some text</item>
  <item link="#" title="Some title">Some text</item>
</root_node>


Код: XSL [Выделить]

  <xsl:template match="root_node">
    <ul>
      <xsl:apply-templates select="item" />
    </ul>
  </xsl:template>
 
  <xsl:template match="root_node/item">
    <li>
      <a href="{@link}" title="{@title}">
        <xsl:value-of select="." />
      </a>
    </li>
  </xsl:template>

*

rellai

  • **
  • 58
  • +5/-0
    • Просмотр профиля
ОК спасибо большое :)
С вашими ответами ясность чуть-чуть начала приходить :)))

*

john

  • ***
  • 203
  • +6/-0
    • Просмотр профиля
Здравствуйте, подскажите как добавить скидку сюда
http://name.ru/emarket/personal/
и сюда
http://name.ru/emarket/cart/

Сейчас выводится - "Скидка 150 руб"
А хотелось бы - "Скидка 5%            150 руб"

Попробовал вот так и ничего
<xsl:value-of select="concat(' — ', .//property[@name = 'proc']/value, '%')" />

Спасибо.

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
http://name.ru/emarket/personal/ вы хотите вывести скидку на заказ привязанную к клиенту? или скидку на заказ от общей суммы покупок?

http://name.ru/emarket/cart/ - информация о скидке есть в xml который возвращает /emarket/cart/ оттуда можно взять id скидки на заказ, по id можно получить объект из которого можно получить описание (один из самых простых путей), при этом не забудьте в описании скидки (в админке) задать необходимый текст, например "Скидка 5%". А размер скидки можно, опять же,  получить из xml макроса /emarket/cart/ (смотрите узел summary)