Вывод баннеров в зависимости от языковой версии сайта (XSLT) — различия между версиями
Velross (обсуждение | вклад) (Новая страница: «'''Задача:''' Выводить баннеры в зависимости от языковой версии сайта <p></p> '''Решение:''' Добав…») |
(нет различий)
|
Версия 17:19, 28 июля 2013
Задача: Выводить баннеры в зависимости от языковой версии сайта
Решение: Добавим в шаблон данных "Баннеры" новую группу "Дополнительные параметры" со свойством "Языковая версия сайта" и типом поля "выпадающий список со множественным выбором". После сохранения изменений будет создан справочник для поля "Языковая версия сайта", который нам необходимо открыть на просмотр и заполнить языковыми версиями сайта в виде их префиксов: 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>
Теперь баннеры будут отображаться или нет в зависимости от выбранных языковых версий в настройках баннера. Аналогично Вы можете сделать вывод баннеров в зависимости от домена.
[Категория:Модуль Баннеры][Категория:Верстка в XSLT]