Размещение фотографии любого размера
Материал из Umicms
задача: выводить фотографии объектов каталога без обрезания на демонстрационном сайте demodizi (шаблон современный). Решение:
За вывод обьектов каталога отвечает шаблон ~\xsltTpls\modules\catalog\common.xsl
В этом файле нужно заменить вызов, отвечающий за создание уменьшенной картинки:
<a href="{@link}" class="image"> <xsl:call-template name="catalog-thumbnail"> <xsl:with-param name="element-id" select="@id" /> <xsl:with-param name="field-name">photo</xsl:with-param> <xsl:with-param name="empty">&empty-photo;</xsl:with-param> <xsl:with-param name="width">114</xsl:with-param> <xsl:with-param name="height">120</xsl:with-param> /xsl:call-template> </a>
на вызов следующего шаблона с доработанной логикой.
<xsl:variable name="image_w" select="document(concat('upage://', @id))/udata/page/properties/group[@name='opisanie_tovara']/property/value/@width"/> <xsl:variable name="image_h" select="document(concat('upage://', @id))/udata/page/properties/group[@name='opisanie_tovara']/property/value/@height"/> <xsl:choose> <xsl:when test="$image_h < $image_w"> <td> <a href="{@link}" class="image"> <xsl:call-template name="catalog-thumbnail"> <xsl:with-param name="element-id" select="@id" /> <xsl:with-param name="field-name">photo</xsl:with-param> <xsl:with-param name="empty">&empty-photo;</xsl:with-param> <xsl:with-param name="width">160</xsl:with-param> <xsl:with-param name="height">auto</xsl:with-param> </xsl:call-template> </a> </td> </xsl:when> <xsl:when test="$image_h > $image_w"> <td> <a href="{@link}" class="image"> <xsl:call-template name="catalog-thumbnail"> <xsl:with-param name="element-id" select="@id" /> <xsl:with-param name="field-name">photo</xsl:with-param> <xsl:with-param name="empty">&empty-photo;</xsl:with-param> <xsl:with-param name="height">160</xsl:with-param> <xsl:with-param name="width">auto</xsl:with-param> </xsl:call-template> </a> </td> </xsl:when> <xsl:otherwise> <td> <a href="{@link}" class="image"> <xsl:call-template name="catalog-thumbnail"> <xsl:with-param name="element-id" select="@id" /> <xsl:with-param name="field-name">photo</xsl:with-param> <xsl:with-param name="empty">&empty-photo;</xsl:with-param> <xsl:with-param name="height">160</xsl:with-param> <xsl:with-param name="width">auto</xsl:with-param> </xsl:call-template> </a> </td> </xsl:otherwise> </xsl:choose>
