Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

0 Пользователей и 1 Гость просматривают эту тему.

*

Babajka

  • *
  • 42
  • +0/-0
    • Просмотр профиля
Доброго времени суток.
Возникла проблема с фотогалереей. Пытаюсь отобразить по 2 фотографии в строке. Службу заботы пытаю уже день четвертый, надеюсь на вашу помощь.
В albums.xsl содержится:
<xsl:template match="result[@module = 'photoalbum'][@method = 'album']">
<xsl:apply-templates select="document(concat('udata://photoalbum/album/',$document-page-id))/udata" />
</xsl:template>

<xsl:template match="udata[@module = 'photoalbum'][@method = 'album']" />

<xsl:template match="udata[@module = 'photoalbum'][@method = 'album'][total]">
<div class="photos">
<xsl:apply-templates select="items/item" mode="photo_list" />
<div class="clear" />
</div>
<xsl:apply-templates select="total" />
</xsl:template>

<xsl:template match="item" mode="photo_list">
<div class="line_photo">
<div class="item">
<xsl:apply-templates select="document(concat('upage://',@id))/udata/page[position() mod 2 != 0]" mode="photo_list" />
</div>
<div class="item">
<xsl:apply-templates select="document(concat('upage://',@id))/udata/page[position() mod 2 = 0]" mode="photo_list" />
</div>
</div>
</xsl:template>

<xsl:template match="page" mode="photo_list">
<div class="media">
<a href="{@link}" umi:element-id="{@id}" umi:field-name="photo">
<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">180</xsl:with-param>
<xsl:with-param name="height">135</xsl:with-param>
</xsl:call-template>
</a>
</div>
<div class="description">
<h3 umi:element-id="{@id}" umi:field-name="h1">
<xsl:value-of select="//property[@name = 'h1']/value" />
</h3>
<xsl:value-of select="//property[@name = 'descr']/value" disable-output-escaping="yes" />
<a href="{@link}" >&more;</a>
</div>
<div class="clear" />
</xsl:template>

Но выводит по 1 "фото+описание" в строке. Вывод кода прямиком из Fire Fox.
<div class="line_photo">
<div class="item">
<div class="media"><a href="/photo/arochnaya_teplica_fermerskaya_1/" umi:element-id="28" umi:field-name="photo"><img src="/images/cms/thumbs/80daed57299900699b31a66148d75e1693555ca7/1_180_135_5_80.jpg" width="180" height="135" umi:element-id="28" umi:field-name="photo" umi:empty="/images/design/nofoto.jpg"></a></div>
<div class="description">
<h3 href="/photo/arochnaya_teplica_fermerskaya_1/" umi:element-id="28" umi:field-name="h1">Арочная теплица ФЕРМЕРСКАЯ 1</h3><p><strong>Категория:</strong> арочные теплицы Solidprof<br /> <strong>Тип каркаса:</strong> сборный алюминиевый<br /> <strong>Материал каркаса:</strong> алюмин.проф.труба</p><a href="/photo/arochnaya_teplica_fermerskaya_1/">Подробнее</a>
</div>
<div class="clear"></div>
</div>
<div class="item"></div><!-- !!! -->
</div>
Строка помеченая !!! это строка:
<xsl:apply-templates select="document(concat('upage://',@id))/udata/page[position() mod 2 = 0]" mode="photo_list" />. 
Следовательно условие [position() mod 2 = 0] невыводит ничего.
Если вместо этого условия поставить:
- page[position() = last()] то он выводит все те же фото+описание что и условие page[position() mod 2 != 0].
- page[position() = first()] он выдает ошибки и не выдает шаблон photoalbum вообще.
Следовательно, по моему мнению, оно хватает некое булево значение. И выводит фото+описание при 1 и не выводит при 0.

Но как можно сделать что бы выводилось по 2 блока <div class="item"> в строке?

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Реально зря мучаете техподдержку, нужно разобраться в устройстве XML и XSLT.

Пытаетесь вывести udata/page чётные и не чётные - а в структуре UPAGE есть только одно udata/page

Цитировать
<udata generation-time="0.017571">
<page id="88" parentId="0" link="/fotografii_dlya_kataloga/" is-active="1" object-id="676" type-id="62" type-guid="photoalbum-album" update-time="1341755491" alt-name="fotografii_dlya_kataloga">
<basetype id="39" module="photoalbum" method="album">Фотоальбом</basetype>
<name>Фотографии для каталога</name>
<properties>
<group id="135" name="common">
<title>Основные параметры</title>
<property id="59" name="h1" type="string">
<title>Поле H1</title>
<value>Фотографии для каталога</value>
</property>
</group>
</properties>
</page>

</udata>

Нужно получать список всех фотографий photoalbum::album()

http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/fotogalerei/photoalbum_album/

В двух словах тут не объяснить, есть тонкости с получением двух элементов и т.п... Если делать нормально - то делать на api..