Автоматическое изменение размера изображения баннера пропорционально одному из указанных параметров (ширине или длине) (xslt) — различия между версиями
Stexe (обсуждение | вклад) |
Stexe (обсуждение | вклад) |
||
Строка 48: | Строка 48: | ||
«''domain_name''» - адрес Вашего сайта. | «''domain_name''» - адрес Вашего сайта. | ||
− | + | Статья актуальна для версии 2.9.21905 |
Версия 08:06, 5 июня 2013
Автоматическое изменение размера изображения баннера пропорционально одному из указанных параметров (ширине или длине) (xslt)
Размер изображения баннера, отображаемого на сайте, будет автоматически изменяться в зависимости от того, какие поля размеров заполнены у баннера в модуле «Баннеры». В шаблоне, по которому выводятся баннеры (в демо шаблоне demodizzy templates\demodizzy\xslt\modules\banners\fastInsert.xsl), в шаблоне <xsl:template match="banner[@type = 'image']"> после строки </xsl:if>необходимо удалить тег <img> и добавить код :
<xsl:variable name="banner_id" select="document(concat('udata://banners/fastInsert/(right_block)/', '@id'))/udata/@id"/>
<xsl:variable name= "w">
<xsl:value-of select="document(concat('uobject://', $banner_id,'.','width'))//value" />
</xsl:variable>
<xsl:variable name= "h">
<xsl:value-of select="document(concat('uobject://', $banner_id,'.','height'))//value" />
</xsl:variable>
<xsl:if test="$w='' and $h!=''">
<xsl:apply-templates select="document(concat('udata://system/makeThumbnail/(.', source, ')/(auto)/',$h,'/'))/udata" mode="if"/>
</xsl:if>
<xsl:if test="$w!='' and $h=''">
<xsl:apply-templates select="document(concat('udata://system/makeThumbnail/(.', source, ')/',$w,'/(auto)/'))/udata" mode="if"/>
</xsl:if>
<xsl:if test="$w='' and $h=''">
<xsl:apply-templates select="document(concat('udata://system/makeThumbnail/(.', source, ')/(auto)/(auto)/'))/udata" mode="if"/>
</xsl:if>
<xsl:if test="$w!='' and $h!=''">
<xsl:apply-templates select="document(concat('udata://system/makeThumbnail/(.', source, ')/',$w,'/',$h,'/'))/udata" mode="if"/>
</xsl:if>
Сначала получаем id баннера, параметр (right_block) означает место показа баннера. Далее получаем ширину и высоту изображения при помощи протокола uObject. Проверяем четыре условия: указана ширина, указана высота, указаны оба размера, не указан ни один. После каждой проверки вызываем системный макрос %system makeThumbnail()% и передаем его в шаблон с необходимыми параметрами. Код вызываемого шаблона необходимо добавить в конец файла.
<xsl:template match="udata[@method='makeThumbnail']" mode="if">
<xsl:variable name="testing">
<xsl:value-of select="/udata/src"/>
</xsl:variable>
<img src="http://domain_name/{$testing}"/>
</xsl:template>
«domain_name» - адрес Вашего сайта.
Статья актуальна для версии 2.9.21905