UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: john от 20 Июня 2011, 19:14:11

Название: Вывести конкретное описание товара в шаблоне xslt
Отправлено: john от 20 Июня 2011, 19:14:11
Вывожу объект каталога, и к нему поле группы описания.
В файле object-view.xsl, макросом
<xsl:apply-templates select=".//group[@name = '&group-parameter;']" mode="table" />
Так же в этом файле вывожу из группы описания, конкретную строчку описания.
макросом
<xsl:apply-templates select=".//property[@name = '&artikul;']" mode="table" />.

А вот когда я вывожу список объектов каталога, редактирую файл common.xsl
Пытаясь вывести конкретную строчку к каждому объекту
Макросом <xsl:apply-templates select=".//property[@name = '&artikul;']" mode="table" />
Объекты выводятся как обычно, но нужной строчки не появляется,
тут как то по другому надо выводить?
Название: Re:Вывести конкретное описание товара в шаб&#
Отправлено: grave от 21 Июня 2011, 14:51:48
как-то так наверное
<xsl:apply-templates select="document(concat(@xlink:href,'.&artikul;'))" mode="table" />
Название: Re:Вывести конкретное описание товара в шаблоне xslt
Отправлено: john от 11 Октября 2011, 21:28:33
Как настроить шаблон по выводу значений у объекта?
В файле common.xsl

         <a href="{@link}" class="title" umi:element-id="{@id}" umi:field-name="name" umi:delete="delete">
            <xsl:value-of select="name" />
            <xsl:if test="not(name)">
               <xsl:apply-templates />
            </xsl:if>
         </a>           

         <div class="price">
            <span umi:element-id="{@id}" umi:field-name="price">
               <xsl:apply-templates select="document(concat('udata://emarket/price/', @id))" />         
            </span>
         </div>           

           
         <div class="add_from_list">
            <a   id="add_basket_{@id}"
               class="button basket_list options_{$is_options}"
               href="{$lang-prefix}/emarket/basket/put/element/{@id}/">
               <xsl:text>&basket-add;</xsl:text>
               <xsl:variable name="element_id" select="@id" />
               <xsl:if test="$cart_items and $cart_items/item[page/@id = $element_id]">
                  <xsl:text> (</xsl:text>
                  <xsl:value-of select="sum($cart_items/item[page/@id = $element_id]/amount)" />
                  <xsl:text>)</xsl:text>
               </xsl:if>
            </a>
         </div>

Вывел: название - цена - кнопка добавить в корзину.
А я хочу добавить:название - цена - КОЛИЧЕСТВО НА СКЛАДЕ -  кнопка добавить в корзину.

<xsl:apply-templates select="document(concat(@xlink:href,'.&artikul;'))" mode="table" /> использовал этот макрос так он всю страницу с объектами съедает и выводится один объект.
Название: Re:Вывести конкретное описание товара в шаблоне xslt
Отправлено: john от 24 Октября 2011, 13:18:08
Ок, помогите разобраться тогда с выводом цены, чтобы можно было выводить потом не только цену.

1. В админке - раздел шаблоны данных - выбираю редактировать объект каталога
    Есть ценовые св-ва с полем price
2. Следующие упоминания о цене в файле /xslttpls/modules/catalog/common.xsl
 
         <div class="price">
            <span umi:element-id="{@id}" umi:field-name="price">
               <xsl:apply-templates select="document(concat('udata://emarket/price/', @id))" />         
            </span>
         </div> 

3. Далее обращаемся в папку /xslttpls/modules/emarket/common.xsl
подключаем файл    
<xsl:include href="price.xsl" />

4. В файле price.xsl

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet   version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

   <xsl:template match="udata[@method = 'price']">
      <xsl:apply-templates select="price" />
   </xsl:template>
   
   <xsl:template match="price|total-price">
      <xsl:value-of select="concat(@prefix, ' ', actual, ' ', @suffix)" />
   </xsl:template>

</xsl:stylesheet>

Правильно ли я выстроил цепочку?
Название: Re:Вывести конкретное описание товара в шаблоне xslt
Отправлено: admin от 25 Октября 2011, 02:40:56
выглядит правильно,

Цитировать
Вывел: название - цена - кнопка добавить в корзину.
А я хочу добавить:название - цена - КОЛИЧЕСТВО НА СКЛАДЕ -  кнопка добавить в корзину.
а насчет вывода какого-то свойства, то это делается так...
если мы говорим о выводе информации на странице товара, то можно так

 <xsl:value-of select="//property[@name='название_свойства']/value" />  (если это поле типа строка, так как поле типа выпадающий список будет выводиться так)   
<xsl:value-of select="//property[@name='название_свойства']/value/item/@name" />, можно через  xsl:apply-templates обращаться к свойству, тогда прописывая шаблон для вывода данных уже можно там учитывать тип поля (смотрите примеры в demodizzy)

, ну а если мы хотим вывести свойство на странице вывода списка товаров, то необходимо вначале получить все зполя, а потом их уже выводить, например так:

<xsl:variable name="item" select="document(concat('upage://', @id))/udata" />
<xsl:value-of select="$item//property[@name='название_свойства']/value" />