UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: Prus от 31 Января 2012, 16:05:40

Название: Добавление фотоальбома в каталог
Отправлено: Prus от 31 Января 2012, 16:05:40
Делаю сейчас первый сайт на xslt. До этого делал на tpl.

Так как времени мало на разработку. То я переделываю шаблон Современный и за одно разбираюсь.

Сейчас мне нужно вместо изображения товара в странице полного описания товара, вывести несколько изображений и сделать слайдшоу.

Подключил в шаблонах данных поле фотоальбом с типом "ссылка на дерево". Теперь хочу понять как выводить эти изображения в описания товара и дальше с ними манипулировать.

В tpl это было довольно легко. Как это делается на xslt?

Спасибо.
Название: Re:Добавление фотоальбома в каталог
Отправлено: admin от 01 Февраля 2012, 17:44:58
точно так же как и в tpl.

Опиши? каким способом ты выводил фотоальбом в tpl и что не получается адаптировать при использовании xslt?
Название: Re:Добавление фотоальбома в каталог
Отправлено: Prus от 01 Февраля 2012, 19:05:22
В тпл делал вывод типа такого:

$FORMS['view_block'] = <<<END
% data getProperty(% id %,'fotka','my_template2',1) %
/tpls/data/my_template2.tpl:
$FORMS['symlink_block'] = <<<END
% items %
END;
$FORMS['symlink_item'] = <<<END
 % data getProperty(% id %,'photo','preview_image') %!
 END;

это не совсем-то, конечно. Но вывод делает по дереву.

Смотрю как сделал в шаблоне современный вывод похожих товаров.


   <xsl:apply-templates select=".//property[@name = '&property-recommended;']" />


но не могу понять, что такое property-recommended, потому что поле называется recommended_items.

Я готов согласиться с мнением, что я туповат) Главное хочу понять, как его сделать.

Еще такой вопрос. Может я сделал не привильно. В ссылке на дерево, я указал просто альбом, может быть нужно выбирать все фотографии? Но тогда это не очень удобно, если фотографий будет 100.

Может у кого-то есть просто готовый шаблон? Вроде тема должна быть популярна, обычно в инет-магазинах выводятся несколько фотографии товара, а не одна.
Название: Re:Добавление фотоальбома в каталог
Отправлено: admin от 01 Февраля 2012, 19:23:30
на данном форуме нет "туповатых", так что с этим соглашаться не стоит, есть вопросы на которые надо найти ответы, и на многие из них ответы уже либо найдены либо сам задающий может самостоятельно решить вопрос.

Теперь по поводу того, как ты решаешь вопрос с выводом значения поля "ссылка на дерево".
Направление "подсмотреть как это делается с рекомендованными товарами" верное, а &property-recommended; - это языковая сущность. Про них подробнее можешь посмотреть в интернете по запросу "xslt сущности".

Если кратко, это что-то вроде языковой переменной, и значение которое подставиться вместо  &property-recommended; ты можешь найти в файле /xsltTpls/i18n/constants.ru.dtd поискав строчку property-recommended, дальше думаю будет проще, но если что не получиться пиши подскажем
Название: Re:Добавление фотоальбома в каталог
Отправлено: Prus от 01 Февраля 2012, 20:55:28
круто
я вместо фотоальбома, добавил фотографии.
ввел <xsl:apply-templates select=".//property[@name = 'fotoalbom']" />
получил все значения все значения, то есть названия фотографий.

А как получить их путь?

как я понимаю путь следующий такой примерно
<xsl:apply-templates select=".//property[@name = 'fotoalbom']" mode="slideshow" />

.....

<xsl:template match="fotoalbom" mode="slideshow">
      ......
   </xsl:template>

Правильно?
Название: Re:Добавление фотоальбома в каталог
Отправлено: admin от 01 Февраля 2012, 21:16:07
можещь для верности глянуть как выглядит xml с которым тебе придеться работать написав вот такой код

<textarea><xsl:copy-of select=".//property[@name = 'fotoalbom']" /></textarea>

как ты правильно написал делаем выборку всех узлов property с именем fotoalbom

<xsl:apply-templates select=".//property[@name = 'fotoalbom']" mode="slideshow" />

пишем шаблон для вывода результатов:
<xsl:template match="property[@name = 'fotoalbom']" mode="slideshow">
      ...какой-то html код
</xsl:template>
Название: Re:Добавление фотоальбома в каталог
Отправлено: Prus от 01 Февраля 2012, 22:56:39
 это я понял))

Я хочу понять как адреса фотографий вытащить от туда)
Как оформить я понимаю.

Могу предположить следующие:
<xsl:template match="property[@name = 'fotoalbom']" mode="slideshow">
    <ul>
<xsl:apply-templates select="items/item" mode="photo" />
</ul>
</xsl:template>

<xsl:template match="item" mode="photo">
    <li>
вот что тут писать? =)
</li>
</xsl:template>
Название: Re:Добавление фотоальбома в каталог
Отправлено: BaceH от 01 Февраля 2012, 23:23:17
http://help-dev.umi-cms.ru/ (http://help-dev.umi-cms.ru/)
XSLT-шаблонизатор UMI.CMS
все данные передаются в xml формате, в главе описано как получить и как просмотреть эти данные.
Название: Re:Добавление фотоальбома в каталог
Отправлено: Prus от 01 Февраля 2012, 23:42:57
Спасибо за ссылку. Я ее знаю. Если бы я это понимал, я бы не спрашивал.
В xml файле есть имена файлов, но не путь к ним. Как вывести имена я понимаю.
Название: Re:Добавление фотоальбома в каталог
Отправлено: BaceH от 02 Февраля 2012, 00:03:03
было бы немного быстрее если бы вы показывали что вы видите.
если есть имя есть и id, если есть id значит можно получить данные upage (см. сылку) по id, а если есть данные о странице есть и путь :)
Название: Re:Добавление фотоальбома в каталог
Отправлено: Prus от 02 Февраля 2012, 02:13:47
Вижу вот:

<property id="396" name="fotoalbom" type="symlink">
<title>Фотоальбом квартиры</title>
<value>
<page id="112" parentId="111" link="/kvartiry/tel_aviv/yaffo_deref_28/179420--32737306-m750x740/" is-active="1" object-id="695" type-id="63" type-guid="photoalbum-photo" update-time="1327903090" alt-name="179420--32737306-m750x740" xlink:href="upage://112">
<basetype id="40" module="photoalbum" method="photo">Фотография</basetype>
<name>179420--32737306-m750x740</name>
</page>
<page id="113" parentId="111" link="/kvartiry/tel_aviv/yaffo_deref_28/179420--32737309-m750x740/" is-active="1" object-id="696" type-id="63" type-guid="photoalbum-photo" update-time="1327903090" alt-name="179420--32737309-m750x740" xlink:href="upage://113">
<basetype id="40" module="photoalbum" method="photo">Фотография</basetype>
<name>179420--32737309-m750x740</name>
</page>
<page id="114" parentId="111" link="/kvartiry/tel_aviv/yaffo_deref_28/179420--45391227-m750x740-uf8976/" is-active="1" object-id="697" type-id="63" type-guid="photoalbum-photo" update-time="1327903090" alt-name="179420--45391227-m750x740-uf8976" xlink:href="upage://114">
<basetype id="40" module="photoalbum" method="photo">Фотография</basetype>
<name>179420--45391227-m750x740-uf8976</name>
</page>
<page id="115" parentId="111" link="/kvartiry/tel_aviv/yaffo_deref_28/179420--45391232-m750x740-u3c255/" is-active="1" object-id="698" type-id="63" type-guid="photoalbum-photo" update-time="1327903090" alt-name="179420--45391232-m750x740-u3c255" xlink:href="upage://115">
<basetype id="40" module="photoalbum" method="photo">Фотография</basetype>
<name>179420--45391232-m750x740-u3c255</name>
</page>
<page id="116" parentId="111" link="/kvartiry/tel_aviv/yaffo_deref_28/179420--45391242-m750x740-ubb1bf/" is-active="1" object-id="699" type-id="63" type-guid="photoalbum-photo" update-time="1327903090" alt-name="179420--45391242-m750x740-ubb1bf" xlink:href="upage://116">
<basetype id="40" module="photoalbum" method="photo">Фотография</basetype>
<name>179420--45391242-m750x740-ubb1bf</name>
</page>
</value>
</property>
Название: Re:Добавление фотоальбома в каталог
Отправлено: Prus от 02 Февраля 2012, 02:14:50
Это я вставил в ссылку на дерево фотографии.
Хотелось бы понять если я вставлю альбом.

Хотя сейчас, я буду рад любому варианту) Потом сам дойду)
Название: Re:Добавление фотоальбома в каталог
Отправлено: Prus от 02 Февраля 2012, 02:15:52
Не знаю важно это или нет. Получил эти данные таким способом
http://beinisrael.com/upage/108
Название: Re:Добавление фотоальбома в каталог
Отправлено: NOIRMAN от 02 Февраля 2012, 02:46:57
Ну может быть попробовать поиграть с property с таким очевидным именем как link ?
Название: Re:Добавление фотоальбома в каталог
Отправлено: admin от 02 Февраля 2012, 04:33:21
вот кусок шаблона для поля типа "ссылка на дерево" с именем "dopolnitelnye_fotografii", в котором выбирается фотоальбом.

там где нужно вывести фото прикрепленного фотоальбома пишем:
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', //property[@name = 'dopolnitelnye_fotografii']/value/page/@id,'/void/1000'))/udata" mode="tovar_photo_list"/>

и добавляем шаблоны для вывода фотоальбома
        
<!-- tovar_photo_list -->
<xsl:template match="udata[@module = 'photoalbum'][@method = 'album']" mode="tovar_photo_list"/>

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

<xsl:template match="item" mode="tovar_photo_list">
<div class="media ">
<xsl:call-template name="catalog-thumbnail-popup">
<xsl:with-param name="element-id" select="@id" />
<xsl:with-param name="field-name">photo</xsl:with-param>
<xsl:with-param name="width">256</xsl:with-param>
</xsl:call-template>
</div>

</xsl:template>
Название: Re:Добавление фотоальбома в каталог
Отправлено: Prus от 02 Февраля 2012, 04:59:48
Где-то синтаксис нарушен. Страница не грузиться
Как включить просмотр ошибок?

Но черт это круто. Я бы сам в жизни не допер. Заработает и сяду разбираться)
Название: Re:Добавление фотоальбома в каталог
Отправлено: Prus от 02 Февраля 2012, 10:01:17
Я понял в чем дело. Надо было выспаться просто)

Спасибо! Круто и очень не понятно) Буду разбираться
Название: Re:Добавление фотоальбома в каталог
Отправлено: admin от 02 Февраля 2012, 11:15:13
что именно не понятно?
Название: Re:Добавление фотоальбома в каталог
Отправлено: Prus от 04 Февраля 2012, 15:59:20
не понятно это
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', //property[@name = 'dopolnitelnye_fotografii']/value/page/@id,'/void/1000'))/udata" mode="tovar_photo_list"/>

Точнее эта часть понятна: udata://photoalbum/album/ это макрос %photoalbum photo% вызываем через udata
//property[@name = 'dopolnitelnye_fotografii']/value/page/@id,'/void/1000'))/udata
а вот тут хотелось бы подробнее. Хочется понять логику.

И появился такой вопрос: вставляю ссылку на фото <a href={@link}>, ссылку идет на фотографию на сайте. А мне нужна прямая ссылка сразу на jpeg. Как это сделать? Не могу найти где храниться путь именно прямой.
Название: Re:Добавление фотоальбома в каталог
Отправлено: admin от 04 Февраля 2012, 22:31:58
представим ситуацию в которой это все происходит, пользователь зашел на страницу товара и там должен увидеть фото из прикрепленного через поле "dopolnitelnye_fotografii" фотоальбом

для того чтобы это сделать нам надо:

- получить id фотоальбома указанного в поле "dopolnitelnye_fotografii".
За это отвечает вот эта часть
//property[@name = 'dopolnitelnye_fotografii']/value/page/@id
объясняю дословно что в данном запросе написано. Найти среди всех узлов property (//property), узел с атрибутом name='dopolnitelnye_fotografii'' (//property[@name = 'dopolnitelnye_fotografii']) и взять его id (//property[@name = 'dopolnitelnye_fotografii']/value/page/@id), почему такой путь до id можно понять если посмотреть на xml вариант страницы товара

- вызвать макрос вывода фотографий фотоальбома с указанным id (как его найти смотри выше) . Рассмотрим подробнее:
<xsl:apply-templates select="document(concat( - функция concat объединяет все перечисленные через запятые части (строки, переменные, значение узлов и т.п.) в единую строку
               'udata://photoalbum/album/',  - обращение к самому макросу
               //property[@name = 'dopolnitelnye_fotografii']/value/page/@id, - первый параметр макроса, id фотоальбома
               '/void/1000' - оставшихся 2 параметра для макроса photoalbum/album, имя шаблона (можно писать что угодно) и кол-во элементов выводимых на странице (1000 написал с запасом)
            ))/udata" mode="tovar_photo_list"/>



Название: Re:Добавление фотоальбома в каталог
Отправлено: Prus от 05 Февраля 2012, 03:54:39
вот уже становиться ясно.

Оке. А есть где можно посмотреть разбор примеров? Просто есть куча нюансов.
Например вот с тойже ссылкой, как я прочел внутрь скобок такой запрос ставить нельзя.
Название: Re:Добавление фотоальбома в каталог
Отправлено: Prus от 08 Февраля 2012, 01:58:08
почти врубился пару вопросов.

Как вывести групп элементов а не один.
Например этого куска:
<group id="362" name="item_properties">
<title>Характеристики</title>
<property id="397" name="kolichestvo_komnat" type="relation">
<title>Количество комнат</title>
<value>
<item id="667" name="2" type-id="135" ownerId="10" xlink:href="uobject://667"/>
</value>
</property>
<property id="398" name="kolichestvo_spalnyh_mest" type="relation">
<title>Спальные места</title>
<value>
<item id="676" name="3" type-id="133" ownerId="10" xlink:href="uobject://676"/>
</value>
</property>
<property id="400" name="cena" type="string">
<title>Цена</title>
<value>60 - 100 $</value>
</property>
<property id="399" name="gorod" type="relation">
<title>Город</title>
<value>
<item id="685" name="Бат Ям" type-id="134" ownerId="10" xlink:href="uobject://685"/>
</value>
</property>
</group>

Потом, у меня получается достать к примеру из property cena числовое значиние, с помощью
 <xsl:value-of select="document(concat('upage://', @id, '.cena'))//value" disable-output-escaping="yes" />

А как мне достать еще и название? Честно смотрел в справочнике юми, не понял.

И последний вопрос: как доставать значения из выпадающих списков. Этот запрос не работает.

Спасибо.
Название: Re:Добавление фотоальбома в каталог
Отправлено: BaceH от 08 Февраля 2012, 03:30:02
<xsl:value-of select="document(concat('upage://', @id, '.cena'))//title" disable-output-escaping="yes" />
<xsl:text>:</xsl:text>
<xsl:value-of select="document(concat('upage://', @id, '.cena'))//value" disable-output-escaping="yes" />
получим
Цена:60 - 100 $

<xsl:value-of select="document(concat('upage://', @id, '.kolichestvo_spalnyh_mest'))//title" disable-output-escaping="yes" />
<xsl:text>:</xsl:text>
<xsl:value-of select="document(concat('upage://', @id, '.kolichestvo_spalnyh_mest'))//value/item/@name" disable-output-escaping="yes" />
получим
Количество комнат:2
и тд.
происходит все как и писал глубокоуважаемый admin :)
document(concat('upage://', @id, '.kolichestvo_spalnyh_mest'))//value
получите значение value свойства с именем kolichestvo_spalnyh_mest (попробуйте вывести), дальше идете по "древу", внутри value элемент item, чтобы обратиться к свойствам элемента используем @ и вывадим значение @name
значение из выпадающего списка достается таким же образом, будет только выбранный элемент, если ничего не выбрано записи не будет.
Название: Re:Добавление фотоальбома в каталог
Отправлено: Axiomateria от 03 Мая 2013, 16:09:13
Для объекта каталога пытаюсь сделать поле "Ссылка на дерево", точнее пытаюсь вывести запрос в шаблоне  объекта каталога, так что бы  эта ссылка просто вела на простую инфо-страницы "Читать дополнительный материал".

moreinfolink - это идентификатор поля тип "Ссылка на дерево".

Попробовал вот так <xsl:apply-templates select="document(concat('udata://property[@name = 'moreinfolink']/value/page/@id,'/void/1000'))/udata" mode="moreinfo-link"/> но не сработало...
Что посоветуете? Надо конечно написать шаблон для mode="moreinfo-link", но вот как?
Название: Re:Добавление фотоальбома в каталог
Отправлено: Axiomateria от 08 Января 2014, 11:13:00
вот кусок шаблона для поля типа "ссылка на дерево" с именем "dopolnitelnye_fotografii", в котором выбирается фотоальбом.
там где нужно вывести фото прикрепленного фотоальбома пишем:
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', //property[@name = 'dopolnitelnye_fotografii']/value/page/@id,'/void/1000'))/udata" mode="tovar_photo_list"/>
Сие успешно применяем, однако что делать, если требуется вывести больше чем один фотоальбом, ну скажем три штуки один за одним ?
Название: Re:Добавление фотоальбома в каталог
Отправлено: e.ioffe от 08 Января 2014, 17:14:33
вот кусок шаблона для поля типа "ссылка на дерево" с именем "dopolnitelnye_fotografii", в котором выбирается фотоальбом.
там где нужно вывести фото прикрепленного фотоальбома пишем:
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', //property[@name = 'dopolnitelnye_fotografii']/value/page/@id,'/void/1000'))/udata" mode="tovar_photo_list"/>
Сие успешно применяем, однако что делать, если требуется вывести больше чем один фотоальбом, ну скажем три штуки один за одним ?

<xsl:apply-templates select="//property[@name = 'dopolnitelnye_fotografii']/value/page" mode="tovar_photo_list"/>

<xsl:template match="page" mode="tovar_photo_list">
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', @id, '/void/1000'))/udata" mode="tovar_photo_list"/>
</xsl:template>
Название: Re:Добавление фотоальбома в каталог
Отправлено: Axiomateria от 08 Января 2014, 17:40:55
<xsl:apply-templates select="//property[@name = 'dopolnitelnye_fotografii']/value/page" mode="tovar_photo_list"/>

<xsl:template match="page" mode="tovar_photo_list">
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', @id, '/void/1000'))/udata" mode="tovar_photo_list"/>
</xsl:template>

У меня ситуация чуток иная, то есть вызов подгрузки фотографий из фотоальбомов такой:
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', //property[@name = 'photo_present']/value/page/@id,'/void/1000'))/udata" mode="pages-info-photos"/>

а шаблон обрабатывающий этот вызов такой:
    <xsl:template match="result[@module = 'photoalbum' and @method = 'album']">
        <xsl:apply-templates select="document(concat('udata://photoalbum/album/',$document-page-id))/udata" />
    </xsl:template>
   
    <xsl:template match="udata[@module = 'photoalbum' and @method = 'album']" mode="pages-info-photos" />

    <xsl:template match="udata[@module = 'photoalbum' and @method = 'album'][total]" mode="pages-info-photos">
        <div class="photo-list">
            <ul>
                <xsl:apply-templates select="items/item" mode="pages-info-photos" />               
                <xsl:apply-templates select="total" />
            </ul>
        </div>
    </xsl:template>

    <xsl:template match="item" mode="pages-info-photos">  
        <xsl:apply-templates select="document(concat('upage://',@id))/udata/page" mode="pages-info-photos" />     
    </xsl:template>

    <xsl:template match="page" mode="pages-info-photos">     
        <li>
            <div class="photo-item">
                <xsl:variable name="src" select="document(concat('upage://',@id,'.photo'))/udata//value" />       
                <a href="{$src}" class="fancybox-thumbs" rel="media-gallery" title="{.//property[@name='h1']/value}">
                    <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">250</xsl:with-param>
                        <xsl:with-param name="height">250</xsl:with-param>
                    </xsl:call-template>
                    <span class="photolink">
                        <xsl:value-of select="//property[@name = 'h1']/value" />
                    </span>
                </a>                       
            </div>       
        </li>
    </xsl:template>
Название: Re:Добавление фотоальбома в каталог
Отправлено: e.ioffe от 08 Января 2014, 17:51:40
<xsl:apply-templates select="//property[@name = 'dopolnitelnye_fotografii']/value/page" mode="tovar_photo_list"/>

<xsl:template match="page" mode="tovar_photo_list">
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', @id, '/void/1000'))/udata" mode="tovar_photo_list"/>
</xsl:template>

У меня ситуация чуток иная, то есть вызов подгрузки фотографий из фотоальбомов такой:
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', //property[@name = 'photo_present']/value/page/@id,'/void/1000'))/udata" mode="pages-info-photos"/>

а шаблон обрабатывающий этот вызов такой:
    <xsl:template match="result[@module = 'photoalbum' and @method = 'album']">
        <xsl:apply-templates select="document(concat('udata://photoalbum/album/',$document-page-id))/udata" />
    </xsl:template>
   
    <xsl:template match="udata[@module = 'photoalbum' and @method = 'album']" mode="pages-info-photos" />

    <xsl:template match="udata[@module = 'photoalbum' and @method = 'album'][total]" mode="pages-info-photos">
        <div class="photo-list">
            <ul>
                <xsl:apply-templates select="items/item" mode="pages-info-photos" />               
                <xsl:apply-templates select="total" />
            </ul>
        </div>
    </xsl:template>

    <xsl:template match="item" mode="pages-info-photos">  
        <xsl:apply-templates select="document(concat('upage://',@id))/udata/page" mode="pages-info-photos" />     
    </xsl:template>

    <xsl:template match="page" mode="pages-info-photos">     
        <li>
            <div class="photo-item">
                <xsl:variable name="src" select="document(concat('upage://',@id,'.photo'))/udata//value" />       
                <a href="{$src}" class="fancybox-thumbs" rel="media-gallery" title="{.//property[@name='h1']/value}">
                    <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">250</xsl:with-param>
                        <xsl:with-param name="height">250</xsl:with-param>
                    </xsl:call-template>
                    <span class="photolink">
                        <xsl:value-of select="//property[@name = 'h1']/value" />
                    </span>
                </a>                       
            </div>       
        </li>
    </xsl:template>

Разницы никакой:

<xsl:apply-templates select="//property[@name = 'photo_present']/value/page" mode="pages-info-photos"/>

<xsl:template match="page" mode="pages-info-photos">
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', @id, '/void/1000'))/udata" mode="pages-info-photos"/>
</xsl:template>
Название: Re:Добавление фотоальбома в каталог
Отправлено: Axiomateria от 08 Января 2014, 18:55:38
Разницы никакой:
<xsl:apply-templates select="//property[@name = 'photo_present']/value/page" mode="pages-info-photos"/>

<xsl:template match="page" mode="pages-info-photos">
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', @id, '/void/1000'))/udata" mode="pages-info-photos"/>
</xsl:template>

Не то что бы я любил поспорить, но разница однако имеется, вот та самая страница, которая на данный момент выводит ваш пример кода...
Как мы видим в результате сейчас выводиться две "битых" фотографии...
Название: Re:Добавление фотоальбома в каталог
Отправлено: e.ioffe от 08 Января 2014, 19:04:47
Разницы никакой:
<xsl:apply-templates select="//property[@name = 'photo_present']/value/page" mode="pages-info-photos"/>

<xsl:template match="page" mode="pages-info-photos">
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', @id, '/void/1000'))/udata" mode="pages-info-photos"/>
</xsl:template>

Не то что бы я любил поспорить, но разница однако имеется, вот та самая страница, которая на данный момент выводит ваш пример кода: [здесь была ссылка]
Как мы видим в результате сейчас выводиться две "битых" фотографии...


Смотрим HTML и видим, что фотографии разные (особое внимание на element-id и alt)

[здесь был исходный html]

Первоначальная просьба: "однако что делать, если требуется вывести больше чем один фотоальбом, ну скажем три штуки один за одним ?"

Код

<xsl:apply-templates select="//property[@name = 'photo_present']/value/page" mode="pages-info-photos"/>

<xsl:template match="page" mode="pages-info-photos">
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', @id, '/void/1000'))/udata" mode="pages-info-photos"/>
</xsl:template>

ее выполняет. Если есть какой-то конкурирующий шаблон с таким же mode и match, можете изменить mode. Если же проблема в структуре данных, то ничем помочь не смогу.

И повторю свой совет - стоит изучить xslt и xpath.
Название: Re:Добавление фотоальбома в каталог
Отправлено: Axiomateria от 08 Января 2014, 19:39:21
И повторю свой совет - стоит изучить xslt и xpath.

Спасибо, конечно. Я всё изучаю на практике. Может быть я не совсем точно сформулировал свой вопрос и получил ответ, который правильный для другого вопроса.
Название: Re:Добавление фотоальбома в каталог
Отправлено: Axiomateria от 08 Января 2014, 19:51:53
Первоначальная просьба: "однако что делать, если требуется вывести больше чем один фотоальбом, ну скажем три штуки один за одним ?"
Код
<xsl:apply-templates select="//property[@name = 'photo_present']/value/page" mode="pages-info-photos"/>

<xsl:template match="page" mode="pages-info-photos">
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', @id, '/void/1000'))/udata" mode="pages-info-photos"/>
</xsl:template>

Вот прописал вызов и шаблон с другим значением mode:
<xsl:apply-templates select="//property[@name = 'photo_present']/value/page" mode="pages-info-photos2"/>

<xsl:template match="page" mode="pages-info-photos2">
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', @id, '/void/1000'))/udata" mode="pages-info-photos2"/>
</xsl:template>
И вот такой теперь результат:
http://glavtouroperator.ru/main/gto_about.html

Как видно, задейственный match="page" обрабатывает слегка не так вывод фотографий, как ранее обрабатывался им же в приведённым выше мною шаблоне:

  
 <xsl:template match="page" mode="pages-info-photos">     
        <li>
            <div class="photo-item">
                <xsl:variable name="src" select="document(concat('upage://',@id,'.photo'))/udata//value" />        
                <a href="{$src}" class="fancybox-thumbs" rel="media-gallery" title="{.//property[@name='h1']/value}">
                    <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">250</xsl:with-param>
                        <xsl:with-param name="height">250</xsl:with-param>
                    </xsl:call-template>
                    <span class="photolink">
                        <xsl:value-of select="//property[@name = 'h1']/value" />
                    </span>
                </a>                        
            </div>        
        </li>
    </xsl:template>

Вот в этом-то вся и заковычина.