UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: rellai от 22 Апреля 2014, 13:03:53

Название: Как добавить информацию о скидке в карточке товара
Отправлено: rellai от 22 Апреля 2014, 13:03:53
Собственно как вывести информацию в карточке товара.
например название или срок действия скидки?

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

но как узнать ид скидки, которая применена?
Название: Re:Как добавить информацию о скидке в карточке товара
Отправлено: ilyar от 22 Апреля 2014, 13:34:21
Собственно как вывести информацию в карточке товара.
например название или срок действия скидки?

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

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

%emarket price()%  (http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/internetmagazin/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>
Название: Re:Как добавить информацию о скидке в карточке товара
Отправлено: rellai от 22 Апреля 2014, 20:27:00
Спасибо за подсказку
<xsl:value-of select="document(concat('udata://emarket/price/',page/@id))" />   
   
сделал вот так а он выводит только цену....
без скидки и со скидкой для разных валют

Цитировать
.........
    18000
    14400
..........
 
Название: Re:Как добавить информацию о скидке в карточке товара
Отправлено: ilyar от 22 Апреля 2014, 21:51:48
Код: 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" />

Название: Re:Как добавить информацию о скидке в карточ&
Отправлено: rellai от 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" />  
Название: Re:Как добавить информацию о скидке в карточке товара
Отправлено: rellai от 23 Апреля 2014, 11:32:21
А еще вопрос хотел бы задать :))
а как мне перебрать все эти элементы
ну в цикле как бы?
Название: Re:Как добавить информацию о скидке в карточке товара
Отправлено: ilyar от 23 Апреля 2014, 12:04:51
А еще вопрос хотел бы задать :))
а как мне перебрать все эти элементы
ну в цикле как бы?

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

Отвечу в общем. Как бы цикл это элементы 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>
Название: Re:Как добавить информацию о скидке в карточке товара
Отправлено: rellai от 23 Апреля 2014, 13:59:14
ОК спасибо большое :)
С вашими ответами ясность чуть-чуть начала приходить :)))
Название: Re:Как добавить информацию о скидке в карточке товара
Отправлено: john от 13 Июня 2014, 18:21:28
Здравствуйте, подскажите как добавить скидку сюда
http://name.ru/emarket/personal/
и сюда
http://name.ru/emarket/cart/

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

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

Спасибо.
Название: Re:Как добавить информацию о скидке в карточке товара
Отправлено: admin от 22 Июня 2014, 19:11:15
http://name.ru/emarket/personal/ вы хотите вывести скидку на заказ привязанную к клиенту? или скидку на заказ от общей суммы покупок?

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