Размещение фотографии любого размера — различия между версиями
Материал из Umicms
Romario (обсуждение | вклад) |
Romario (обсуждение | вклад) |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
− | + | задача: выводить фотографии объектов каталога без обрезания на демонстрационном сайте demodizi (шаблон современный). | |
+ | Решение: | ||
− | + | За вывод обьектов каталога отвечает шаблон ~\xsltTpls\modules\catalog\common.xsl | |
+ | В этом файле нужно заменить вызов, отвечающий за создание уменьшенной картинки: | ||
+ | <source lang="xml"> | ||
+ | <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> | ||
+ | </source> | ||
+ | |||
+ | на вызов следующего шаблона с доработанной логикой. | ||
<source lang="xml"> | <source lang="xml"> | ||
+ | |||
+ | <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:choose> | ||
− | <xsl:when test="$image_h < $image_w"> | + | <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> | |
− | </xsl:when> | + | </a> |
− | <xsl:when test="$image_h > $image_w"> | + | </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:when> | + | <xsl:with-param name="width">auto</xsl:with-param> |
− | <xsl:otherwise> | + | </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:otherwise> | + | <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> | ||
</source> | </source> | ||
+ | |||
[[Категория:Верстка в XSLT]] | [[Категория:Верстка в XSLT]] |
Текущая версия на 14:22, 27 февраля 2012
задача: выводить фотографии объектов каталога без обрезания на демонстрационном сайте 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>