Автоматическое изменение размера изображения баннера пропорционально одному из указанных параметров (ширине или длине) (xslt)
Актуально для версии 2.9
Автоматическое изменение размера изображения баннера пропорционально одному из указанных параметров (ширине или длине) (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» - адрес Вашего сайта.