Вывод баннеров в зависимости от языковой версии сайта (XSLT)

Материал из Umicms
Перейти к:навигация, поиск

Задача: Выводить баннеры в зависимости от языковой версии сайта

Решение: Добавим в шаблон данных "Баннеры" новую группу "Дополнительные параметры" со свойством "Языковая версия сайта" и типом поля "выпадающий список со множественным выбором". После сохранения изменений будет создан справочник для поля "Языковая версия сайта", который нам необходимо открыть на просмотр и заполнить языковыми версиями сайта в виде их префиксов: ru, en.

Теперь откроем на редактирование любой баннер и отметим на каких языковых версиях он должен отображаться.

Реализация в шаблоне

Чтобы не делать много темплейтов, воспользуемся расширенными свойствами. Для этого откроем шаблон demodizzy: /templates/demodizzy/xslt/layouts/default.xsl и дополним вызов баннера расширенным свойством language_version

<xsl:apply-templates select="document(concat('udata://banners/fastInsert/right_block/','?extProps=language_version'))/udata" mode="right" />

Теперь откроем шаблон, по которому отображаются баннеры: /templates/demodizzy/xslt/modules/banners/fastInsert.xsl и дополним темплейт udata[@module = 'banners'][@method = 'fastInsert'][banner], но перед этим получим текущий языковой префикс

<xsl:stylesheet	version="1.0"
				xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
				xmlns:date="http://exslt.org/dates-and-times"
				xmlns:udt="http://umi-cms.ru/2007/UData/templates"
				xmlns:umi="http://www.umi-cms.ru/TR/umi"
				xmlns:xlink="http://www.w3.org/1999/xlink"
				exclude-result-prefixes="xsl date udt xlink">

<!-- Получаем текущий языковой префикс -->
<xsl:param name="lang" select="result/@lang" />

....

<xsl:template match="udata[@module = 'banners'][@method = 'fastInsert'][banner]" mode="right">
        <!-- Делаем проверку по языку -->
	<xsl:if test="extended/properties/property/value/item/@name = $lang" >
		<div class="gray_block">
			<xsl:apply-templates select="banner" />
		</div>
	</xsl:if>
</xsl:template>

Теперь баннеры будут отображаться или нет в зависимости от выбранных языковых версий в настройках баннера. Аналогично Вы можете сделать вывод баннеров в зависимости от домена.