Пример использования протокола umap — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «'''Актуально для версии 2.9.5''' == Задача == Допустим, Вы хотите получать ajax'ом некий html докумен…»)
(нет различий)

Версия 15:19, 28 февраля 2014

Актуально для версии 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>