UMIhelp
Разработка сайта на UMI.CMS => Шаблоны 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" />
Объекты выводятся как обычно, но нужной строчки не появляется,
тут как то по другому надо выводить?
-
как-то так наверное
<xsl:apply-templates select="document(concat(@xlink:href,'.&artikul;'))" mode="table" />
-
Как настроить шаблон по выводу значений у объекта?
В файле 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" /> использовал этот макрос так он всю страницу с объектами съедает и выводится один объект.
-
Ок, помогите разобраться тогда с выводом цены, чтобы можно было выводить потом не только цену.
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>
Правильно ли я выстроил цепочку?
-
выглядит правильно,
Вывел: название - цена - кнопка добавить в корзину.
А я хочу добавить:название - цена - КОЛИЧЕСТВО НА СКЛАДЕ - кнопка добавить в корзину.
а насчет вывода какого-то свойства, то это делается так...
если мы говорим о выводе информации на странице товара, то можно так
<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" />