Выведем товара у которых есть свойство старая цена (old_price) и отсортируем по цене старой, чтобы элементы которые имеют старую цену в значение 0, передвинуть в самый низ
Документация по методу на офф сайте UMI.
Сделаем udata запрос (фильтра UMI) метода getSmartCatalog
1 |
udata://catalog/getSmartCatalog/notemplate/220/20/1/2/old_price/0 |
Получим кол-во элементов по фильтру
1 |
<xsl:value-of select="count(document('udata://catalog/getSmartCatalog/notemplate/220/20/1/2/old_price/0')/udata/lines/item)" /> |
Сделаем проверку, получим элементы только те у которых есть старая цена и успешные результаты передадим в шаблон show_discount_items
1 2 3 4 5 6 7 8 9 10 |
<xsl:template match="/"> <xsl:choose> <xsl:when test="count(document('udata://catalog/getSmartCatalog/notemplate/220/20/1/2/old_price/0')/udata/lines/item) != 0"> <xsl:apply-templates select="document('udata://catalog/getSmartCatalog/notemplate/220/20/1/2/old_price/0')/udata/lines" mode="show_discount_items"/> </xsl:when> <xsl:otherwise> Элементов нет </xsl:otherwise> </xsl:choose> </xsl:template> |
Обработаем данные у которых старая цена не равна 0
1 2 3 4 5 |
<xsl:template match="item" mode="show_discount_items"> <xsl:if test="document(concat('upage://',@id))/udata/page/properties/group[@name='cenovye_svojstva']/property[@name='old_price']/value != 0"> <xsl:apply-templates select="." mode="catalog_article" /> </xsl:if> </xsl:template> |
Перенаправим результат в шаблон catalog_article
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
<xsl:template match="item" mode="catalog_article"> <xsl:variable name="id" select="@id"/> <xsl:variable name="count" select="document('udata://emarket/cart/')/udata/items/item/page[@id = $id]/../amount"/> <xsl:variable name="parentId" select="document(concat('upage://',@id))/udata/page/@parentId"/> <xsl:variable name="isPromo"> <xsl:value-of select="document(concat('upage://',@id))/udata/page/properties/group[@name='catalog_option_props']/property[@name='akciya']/value"/> </xsl:variable> <xsl:variable name="promoText"> <xsl:if test="$isPromo = 1"> <xsl:value-of select="document(concat('upage://',@id))/udata/page/properties/group[@name='catalog_option_props']/property[@name='tekst_akcii']/value/item/@name"/> </xsl:if> </xsl:variable> <xsl:variable name="promoClass"> <xsl:if test="$isPromo = 1"> article--action </xsl:if> </xsl:variable> <xsl:variable name="promo-block" > <xsl:choose > <xsl:when test="document(concat('upage://',@id))//property[@name = 'ishit']/value = 1"> <div class="article__promo-block"> <div class="article__promo article__promo--hit"> </div> <div class="article__promo-text article__promo-text--light"> Хит! </div> </div> </xsl:when> <xsl:when test="document(concat('upage://',@id))//property[@name = 'new']/value = 1"> <div class="article__promo-block"> <div class="article__promo article__promo--new"> </div> <div class="article__promo-text article__promo-text--light"> Новинка! </div> </div> </xsl:when> <xsl:when test="document(concat('upage://',@id))//property[@name = 'akciya']/value = 1" > <div class="article__promo-block"> <div class="article__promo article__promo--akciya"> </div> <div class="article__promo-text article__promo-text--light"> Акция! </div> </div> </xsl:when> <xsl:otherwise> </xsl:otherwise> </xsl:choose> </xsl:variable> <div data-amount="{$count}" class="article-list__item article {$promoClass}"> <div class="article__hover"> </div> <div class="article__hover article__hover_plus"> <xsl:copy-of select="$promo-block"/> </div> <xsl:copy-of select="$promo-block"/> <a href="{@link}" class="link_img_hover"></a> <div class="article__img"> <a href="{@link}"> <img src="{document(concat('upage://',@id))/udata/page/properties/group[@name='menu_view']/property[@name='header_pic']/value}" alt=""/> </a> </div> <div class="article__down " data-action="{$promoText}"> <p class="article__title"> <a href="{document(concat('upage://',@id))/udata/page/@link}"> <xsl:value-of select="document(concat('upage://',@id))/udata/page/name"/> </a> </p> <div class="article__price-block"> <input class="article__input" type="number" value="1" /> <xsl:choose> <xsl:when test="document(concat('upage://',@id))/udata/page/properties/group[@name='cenovye_svojstva']/property[@name='old_price']/value != 0"> <span class="article__price article__price--old"> <xsl:value-of select="document(concat('upage://',@id))/udata/page/properties/group[@name='cenovye_svojstva']/property[@name='old_price']/value"/> </span> <span class="article__price discount__price"> <xsl:value-of select="document(concat('upage://',@id))/udata/page/properties/group[@name='cenovye_svojstva']/property[@name='price']/value"/> </span> </xsl:when> <xsl:otherwise> <span class="article__price"> <xsl:value-of select="document(concat('upage://',@id))/udata/page/properties/group[@name='cenovye_svojstva']/property[@name='price']/value"/> </span> </xsl:otherwise> </xsl:choose> </div> <div data-link="{document(concat('udata://emarket/basketAddLink/',@id))/udata/link}" class="article__button button button--basket"> <span> <xsl:choose> <xsl:when test="$count > 0"> Товар в корзине </xsl:when> <xsl:otherwise> В корзину </xsl:otherwise> </xsl:choose> </span> </div> </div> </div> </xsl:template> |
Присвоение переменных и вывод их
Возьмем из custom метода город
1 |
<xsl:variable name="town" select="document('udata://custom/myGeoIp')" /> |
И от его результата будет зависеть значение нашей переменной
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<xsl:variable name="town_name"> <xsl:choose> <xsl:when test="$town = 'SPB'"> <xsl:text>Санкт-Петербург</xsl:text> </xsl:when> <xsl:when test="$town = 'MSK'"> <xsl:text>Москва</xsl:text> </xsl:when> <xsl:otherwise> <xsl:text>Москва</xsl:text> </xsl:otherwise> </xsl:choose> </xsl:variable> |
Выведем переменную
1 |
<xsl:value-of select="$town_name"/> |
Вывод содержимого с обработкой HTML Umi
1 |
<xsl:value-of select="/result/page/properties/group/property[@name='content']/value" disable-output-escaping="yes"/> |
disable-output-escaping=»yes» — отвечаем за обработку HTML