Вывод способов доставки в зависимости от домена — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
Строка 24: Строка 24:
 
</source>
 
</source>
 
Теперь при оформлении доставки, на этапе выбора способа доставки будут показаны те способы, поле "domain" которых соответствует текущему домену.
 
Теперь при оформлении доставки, на этапе выбора способа доставки будут показаны те способы, поле "domain" которых соответствует текущему домену.
[[Категория:Шаблонизаторы]][[Категория:Верстка в XSLT]]
+
[[Категория:Верстка в XSLT]]

Версия 19:53, 4 июня 2013

Иногда может возникнуть ситуация, когда в мультисайтовой системе требуется выводить разный список способов доставки при оформлении заказа в зависимости от домена. При использовании XSLT шаблонизатора, задача решается довольно просто. Для начала стоит произвести некоторые приготовления. Идём в модуль "Шаблоны данных" находим тип "Способ доставки" и добавляем ему поле типа "Выпадающий список" с идентификатором domain. В качестве справочника для этого списка нужно выбрать созданный заранее справочник в котором перечислены домены. Теперь для облегчения задачи можно написать простой кастом с примерно следующим кодом:

public function domain() {
	return $_SERVER["HTTP_HOST"];
}

Этот макрос будет просто возвращать текущий домен. Идём модуль "Интернет магазин"и на вкладке "Доставка" редактируем созданное поле "domain" в соответствии с потребностями. После проделанных подготовительных операций, можно приступить непосредственно к XSLT шаблону. Открываем шаблон в котором выводится список способов доставки и обрамляем вывод способа доставки в условие (в demodizzy данный код находится в файле /xsltTpls/modules/emarket/purchase/delivery.xsl).

<xsl:if test="document('udata://custom/domain')=document(concat('uobject://',@id,'.domen'))/udata/property/value/item/@name " >
		<div>
			<label>
				<input type="radio" name="delivery-id" value="{@id}">
					<xsl:apply-templates select="." mode="delivery-choose-first" />
				</input>
				<xsl:value-of select="@name" />
				
				<xsl:call-template  name="delivery-price" >
					<xsl:with-param name="price" select="$delivery-price"/>
				</xsl:call-template >
			</label>
		</div>
</xsl:if>

Теперь при оформлении доставки, на этапе выбора способа доставки будут показаны те способы, поле "domain" которых соответствует текущему домену.