Разный текст уведомления для разного статуса заказа

Материал из Umicms
Версия от 08:01, 4 апреля 2014; Mad grant (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Актуально для версии 2.9.6

Задача

Сделать для разных статусов разный текст письма-уведомления клиенту.

Решение

Решить задачу в xslt шаблоне письма можно с помощью <xsl:choose> в связке XPath функции contains(), ниже дан пример шаблона.

Пример

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet SYSTEM "ulang://i18n/constants.dtd:file">

<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="status_notification">
		<xsl:text>Ваш заказ #</xsl:text>
		<xsl:text> </xsl:text>
		<xsl:value-of select="order_number" />
		<!-- Начало условий по статусу -->
		<xsl:choose>
			<!-- Уведомления о статусе заказа -->
			<xsl:when test="contains(status, 'поступил в обработку')">
				был получен
			</xsl:when>
			<xsl:when test="contains(status, 'отменён')">
				был отменен =(
			</xsl:when>
			<xsl:when test="contains(status, 'отклонён')">
				был отклонен =(
			</xsl:when>
			<xsl:when test="contains(status, 'доставляется')">
				доставляется
			</xsl:when>
			<xsl:when test="contains(status, 'готов')">
				готов
			</xsl:when>
			<xsl:when test="contains(status, 'принят')">
				принят
			</xsl:when>
			<xsl:when test="contains(status, 'оплачивается')">
				оплачивается
			</xsl:when>
			<xsl:when test="contains(status, 'редактируется')">
				редактируется
			</xsl:when>
			<!-- Уведомления о статусе оплаты -->
			<xsl:when test="contains(status, 'ожидает оплаты')">
				ожидает платы
			</xsl:when>
			<xsl:when test="contains(status, 'оплачен')">
				был оплачен
			</xsl:when>
			<xsl:when test="contains(status, 'обновлен: оплата подтверждена')">
				был обновлен, оплата подтверждена
			</xsl:when>
			<xsl:when test="contains(status, 'обновлен: оплата отклонена')">
				был обновлен, оплата отклонена
			</xsl:when>
			<!-- Уведомления о статусе доставки -->
			<xsl:when test="contains(status, 'ожидает отгрузки')">
				ожидает отгрузки
			</xsl:when>
			<xsl:when test="contains(status, 'доставляется')">
				отправлен
			</xsl:when>
			<xsl:when test="contains(status, 'доставлен')">
				доставлен
			</xsl:when>
		</xsl:choose>
		<!-- Конец условий по статусу -->
		<xsl:text>Посмотреть историю заказов вы можете в своем </xsl:text>
		<a href="http://{domain}/emarket/personal/">
			<xsl:text>личном кабинете</xsl:text>
		</a>.
	</xsl:template>
	
	<!-- Уведомление клиенту в случае оплаты квитанцией -->
	<xsl:template match="status_notification_receipt">
		<xsl:text>Ваш заказ #</xsl:text>
		<xsl:value-of select="order_number" />
		<xsl:text> </xsl:text>
		<xsl:value-of select="status" />
		<br/><br/>
		<xsl:text>Посмотреть историю заказов вы можете в своем </xsl:text>
		<a href="http://{domain}/emarket/personal/">
			<xsl:text>личном кабинете</xsl:text>
		</a>.
		<br/><br/>
		<xsl:text>Квитанцию на оплату вы можете получить, перейдя по </xsl:text>
		<a href="http://{domain}/emarket/receipt/{order_id}/{receipt_signature}/">
			<xsl:text>этой ссылке</xsl:text>
		</a>.
	</xsl:template>
	
	<!-- Уведомления менеджеру о новом заказе -->
	<xsl:template match="neworder_notification">
		<xsl:text>Поступил новый заказ #</xsl:text>
		<xsl:value-of select="order_number" />
		<xsl:text> (</xsl:text>
		<a href="http://{domain}/admin/emarket/order_edit/{order_id}/">
			<xsl:text>Просмотр</xsl:text>
		</a>
		<xsl:text>)</xsl:text><br/><br/>
		<xsl:text>Способ оплаты: </xsl:text>
		<xsl:value-of select="payment_type" /><br/>
		<xsl:text>Статус оплаты: </xsl:text>
		<xsl:value-of select="payment_status" /><br/>
		<xsl:text>Сумма оплаты:  </xsl:text>
		<xsl:value-of select="price" /><br/>
	</xsl:template>

</xsl:stylesheet>

Уникальный для статуса текст нужно вставлять между тегами <xsl:when>.