Вывод баннеров в зависимости от языковой версии сайта (XSLT) — различия между версиями
Velross (обсуждение | вклад) (Новая страница: «'''Задача:''' Выводить баннеры в зависимости от языковой версии сайта <p></p> '''Решение:''' Добав…») |
Velross (обсуждение | вклад) |
||
Строка 22: | Строка 22: | ||
exclude-result-prefixes="xsl date udt 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:template match="udata[@module = 'banners'][@method = 'fastInsert'][banner]" mode="right"> | ||
+ | <!-- Делаем проверку по языку --> | ||
<xsl:if test="extended/properties/property/value/item/@name = $lang" > | <xsl:if test="extended/properties/property/value/item/@name = $lang" > | ||
<div class="gray_block"> | <div class="gray_block"> | ||
Строка 37: | Строка 39: | ||
Аналогично Вы можете сделать вывод баннеров в зависимости от домена. | Аналогично Вы можете сделать вывод баннеров в зависимости от домена. | ||
<p></p> | <p></p> | ||
− | [Категория:Модуль Баннеры][Категория:Верстка в XSLT] | + | [[Категория:Модуль Баннеры]][[Категория:Верстка в XSLT]] |
Версия 17:22, 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>
Теперь баннеры будут отображаться или нет в зависимости от выбранных языковых версий в настройках баннера. Аналогично Вы можете сделать вывод баннеров в зависимости от домена.