XSLT шаблоны для всех типов баннеров — различия между версиями
Материал из Umicms
Stexe (обсуждение | вклад) м (переименовал «Как добавить баннер в xslt-шаблон» в «XSLT шаблоны для всех типов баннеров») |
Alexei (обсуждение | вклад) |
||
(не показаны 2 промежуточные версии 1 участника) | |||
Строка 1: | Строка 1: | ||
− | + | [[Категория: Верстка в XSLT]][[Категория: Модуль Баннеры]] | |
− | + | '''Актуально для версии 2.9.6'''<br/><br/> | |
+ | '''Задача:''' Добавить шаблоны вывода баннеров всех типов: с картинкой, флэшкой и HTML.<br/><br/> | ||
+ | '''Реализация:''' | ||
− | + | В директории с XSLT-шаблонами (папка '''./xsltTpls''' или '''./templates/имя_шаблона/xslt''' при новом формате хранения шаблонов) создадим новый файл banners.xsl и добавим в него следующее содержимое: | |
+ | <source lang="xml"> | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | |||
+ | <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:template match="udata[@module = 'banners'][@method = 'fastInsert']" /> | |
− | < | + | <xsl:template match="udata[@module = 'banners'][@method = 'fastInsert'][banner]"> |
+ | <div class="gray_block"> | ||
+ | <xsl:apply-templates select="banner" /> | ||
+ | </div> | ||
+ | </xsl:template> | ||
+ | |||
+ | <xsl:template match="udata[@module = 'banners'][@method = 'fastInsert']"> | ||
+ | <xsl:apply-templates select="banner" /> | ||
+ | </xsl:template> | ||
− | < | + | <xsl:template match="banner" /> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | <xsl: | + | <xsl:template match="banner[@type = 'image']"> |
− | + | <xsl:choose> | |
− | + | <xsl:when test="href"> | |
+ | <a href="/banners/go_to/{/udata/@id}/"> | ||
+ | <xsl:if test="@target"> | ||
+ | <xsl:attribute name="target"> | ||
+ | <xsl:value-of select="@target" /> | ||
+ | </xsl:attribute> | ||
+ | </xsl:if> | ||
+ | <img src="{source}" width="{@width}" height="{@height}" alt="{alt}" border="0" /> | ||
+ | </a> | ||
+ | </xsl:when> | ||
+ | <xsl:otherwise> | ||
+ | <img src="{source}" width="{@width}" height="{@height}" alt="{alt}" border="0" /> | ||
+ | </xsl:otherwise> | ||
+ | </xsl:choose> | ||
+ | </xsl:template> | ||
− | + | <xsl:template match="banner[@type = 'swf']"> | |
− | + | <object width="{@width}" height="{@height}" align="middle" | |
+ | codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" | ||
+ | classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"> | ||
+ | <param name="allowScriptAccess" value="sameDomain" /> | ||
+ | <param name="movie" value="{source}" /> | ||
+ | <param name="quality" value="high" /> | ||
+ | <param name="bgcolor" value="#ffffff" /> | ||
+ | <param name="wmode" value="opaque" /> | ||
+ | <xsl:if test="href"> | ||
+ | <param name="flashVars"> | ||
+ | <xsl:attribute name="value"> | ||
+ | <xsl:text>url=/banners/go_to/</xsl:text><xsl:value-of select="/udata/@id" /><xsl:text>/</xsl:text> | ||
+ | <xsl:if test="@target"> | ||
+ | <xsl:text>&target=</xsl:text><xsl:value-of select="@target" /> | ||
+ | </xsl:if> | ||
+ | </xsl:attribute> | ||
+ | </param> | ||
+ | </xsl:if> | ||
+ | <embed width="{@width}" height="{@height}" align="middle" wmode="opaque" | ||
+ | pluginspage="http://www.macromedia.com/go/getflashplayer" | ||
+ | type="application/x-shockwave-flash" allowscriptaccess="sameDomain" | ||
+ | name="banner" bgcolor="#ffffff" quality="high" src="{source}"> | ||
+ | <xsl:if test="href"> | ||
+ | <xsl:attribute name="flashVars"> | ||
+ | <xsl:text>url=/banners/go_to/</xsl:text><xsl:value-of select="/udata/@id" /><xsl:text>/</xsl:text> | ||
+ | <xsl:if test="@target"> | ||
+ | <xsl:text>&target=</xsl:text><xsl:value-of select="@target" /> | ||
+ | </xsl:if> | ||
+ | </xsl:attribute> | ||
+ | </xsl:if> | ||
+ | </embed> | ||
+ | </object> | ||
+ | </xsl:template> | ||
− | + | <xsl:template match="banner[@type = 'html']"> | |
− | + | <xsl:value-of select="source" disable-output-escaping="yes" /> | |
− | + | </xsl:template> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | </xsl:template> | ||
</xsl:stylesheet> | </xsl:stylesheet> | ||
</source> | </source> | ||
− | + | В основном файле шаблона (название файла можно посмотреть в настройках модуля "Структура") добавим строку подключения созданного файла banners.xsl: | |
<source lang="xml"> | <source lang="xml"> | ||
− | <xsl: | + | <xsl:include href="banners.xsl" /> |
</source> | </source> | ||
− | + | ||
+ | Данные шаблоны обрабатывают результаты работы макроса '''banners fastInsert()'''. Пример вызова данного макроса приведен ниже: | ||
<source lang="xml"> | <source lang="xml"> | ||
− | <xsl:apply-templates select="document('udata://banners/ | + | <xsl:apply-templates select="document('udata://banners/fastInsert/(идентификатор_рекламного_места)')/udata/banner"/> |
</source> | </source> |
Текущая версия на 10:39, 20 января 2016
Актуально для версии 2.9.6
Задача: Добавить шаблоны вывода баннеров всех типов: с картинкой, флэшкой и HTML.
Реализация:
В директории с XSLT-шаблонами (папка ./xsltTpls или ./templates/имя_шаблона/xslt при новом формате хранения шаблонов) создадим новый файл banners.xsl и добавим в него следующее содержимое:
<?xml version="1.0" encoding="UTF-8"?>
<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:template match="udata[@module = 'banners'][@method = 'fastInsert']" />
<xsl:template match="udata[@module = 'banners'][@method = 'fastInsert'][banner]">
<div class="gray_block">
<xsl:apply-templates select="banner" />
</div>
</xsl:template>
<xsl:template match="udata[@module = 'banners'][@method = 'fastInsert']">
<xsl:apply-templates select="banner" />
</xsl:template>
<xsl:template match="banner" />
<xsl:template match="banner[@type = 'image']">
<xsl:choose>
<xsl:when test="href">
<a href="/banners/go_to/{/udata/@id}/">
<xsl:if test="@target">
<xsl:attribute name="target">
<xsl:value-of select="@target" />
</xsl:attribute>
</xsl:if>
<img src="{source}" width="{@width}" height="{@height}" alt="{alt}" border="0" />
</a>
</xsl:when>
<xsl:otherwise>
<img src="{source}" width="{@width}" height="{@height}" alt="{alt}" border="0" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="banner[@type = 'swf']">
<object width="{@width}" height="{@height}" align="middle"
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="{source}" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="wmode" value="opaque" />
<xsl:if test="href">
<param name="flashVars">
<xsl:attribute name="value">
<xsl:text>url=/banners/go_to/</xsl:text><xsl:value-of select="/udata/@id" /><xsl:text>/</xsl:text>
<xsl:if test="@target">
<xsl:text>&target=</xsl:text><xsl:value-of select="@target" />
</xsl:if>
</xsl:attribute>
</param>
</xsl:if>
<embed width="{@width}" height="{@height}" align="middle" wmode="opaque"
pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash" allowscriptaccess="sameDomain"
name="banner" bgcolor="#ffffff" quality="high" src="{source}">
<xsl:if test="href">
<xsl:attribute name="flashVars">
<xsl:text>url=/banners/go_to/</xsl:text><xsl:value-of select="/udata/@id" /><xsl:text>/</xsl:text>
<xsl:if test="@target">
<xsl:text>&target=</xsl:text><xsl:value-of select="@target" />
</xsl:if>
</xsl:attribute>
</xsl:if>
</embed>
</object>
</xsl:template>
<xsl:template match="banner[@type = 'html']">
<xsl:value-of select="source" disable-output-escaping="yes" />
</xsl:template>
</xsl:stylesheet>
В основном файле шаблона (название файла можно посмотреть в настройках модуля "Структура") добавим строку подключения созданного файла banners.xsl:
<xsl:include href="banners.xsl" />
Данные шаблоны обрабатывают результаты работы макроса banners fastInsert(). Пример вызова данного макроса приведен ниже:
<xsl:apply-templates select="document('udata://banners/fastInsert/(идентификатор_рекламного_места)')/udata/banner"/>