Пример использования протокола umap
Материал из Umicms
Версия от 15:19, 28 февраля 2014; Mad grant (обсуждение | вклад) (Новая страница: «'''Актуально для версии 2.9.5''' == Задача == Допустим, Вы хотите получать ajax'ом некий html докумен…»)
Актуально для версии 2.9.5
Задача
Допустим, Вы хотите получать ajax'ом некий html документ, который будет содержать информацию о текущей корзине, чтобы вывести его на сайте.
Решение
Задачу попробуем реализовать с помощью протокола umap, для этого добавим в файл /umaps/sitemap.xml внутрь тега <sitemap> следующий код:
<match pattern="^basket(.*)$">
<generate src="udata://emarket/cart" />
<transform src="./xsltTpls/sys-tpls/basket.xsl" />
<serialize type="html" />
</match>
Суть его работы следующая. На запрос, удовлетворяющий регулярному выражению ^basket(.*)$, нужно вернуть данные, полученные по запросу udata://emarket/cart, трансформированные xsl шаблоном по пути ./xsltTpls/sys-tpls/basket.xsl и сериализованные как html.
Теперь создадим файл /xsltTpls/sys-tpls/basket.xsl следующего содержания:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="utf-8" method="html" indent="yes"/>
<xsl:template match="/">
<strong>
Ваша корзина
</strong>
<table>
<xsl:for-each select="udata/items/item">
<tr>
<td>
<xsl:value-of select="./@name"/>
</td>
<td>
<xsl:value-of select="./amount"/> шт.
</td>
<td>
<xsl:value-of select="./price/actual"/> руб.
</td>
</tr>
</xsl:for-each>
<tr>
<td>
<strong>
Всего:
</strong>
</td>
<td>
<strong>
<xsl:value-of select="udata/summary/amount"/> шт.
</strong>
</td>
<td>
<strong>
<xsl:value-of select="udata/summary/price/actual"/> руб.
</strong>
</td>
</tr>
<tr>
<td>
<a href="/emarket/cart/">Перейти к оформлению</a>
</td>
</tr>
</table>
</xsl:template>
</xsl:stylesheet>