Автоматическое изменение размера изображения баннера пропорционально одному из указанных параметров (ширине или длине) (xslt)

Материал из Umicms
Перейти к:навигация, поиск


Актуально для версии 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» - адрес Вашего сайта.