Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Добавление страницы в "Избранное"

Автор diii3Раздел Шаблоны XSLT

Ответов: 4
Просмотров: 3288
Последний ответ 13 Февраля 2013, 06:18:50
от admin
Добавление товаров в корзину с количеством товаров ajax

Автор tatfoxРаздел JS и AJAX

Ответов: 12
Просмотров: 6547
Последний ответ 24 Мая 2016, 17:00:10
от tatfox
Добавление поля "объем" в карточку товара, которое влияло бы на цену

Автор prukonРаздел Настройка системы и модулей

Ответов: 5
Просмотров: 2929
Последний ответ 06 Ноября 2016, 14:44:49
от aghigay
Добавление данных из объекта в форму "Заказ в 1 клик"

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 4
Просмотров: 4015
Последний ответ 11 Ноября 2014, 11:14:45
от Axiomateria
Магазин "Современный" - добавление заголовка к левому меню каталога

Автор manadsgnРаздел Шаблоны XSLT

Ответов: 4
Просмотров: 4060
Последний ответ 25 Июня 2012, 17:33:00
от manadsgn

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

*

Prus

  • *
  • 46
  • +1/-0
    • Просмотр профиля
Re:Добавление фотоальбома в каталог
« Ответ #15 : 02 Февраля 2012, 04:59:48 »
Где-то синтаксис нарушен. Страница не грузиться
Как включить просмотр ошибок?

Но черт это круто. Я бы сам в жизни не допер. Заработает и сяду разбираться)

*

Prus

  • *
  • 46
  • +1/-0
    • Просмотр профиля
Re:Добавление фотоальбома в каталог
« Ответ #16 : 02 Февраля 2012, 10:01:17 »
Я понял в чем дело. Надо было выспаться просто)

Спасибо! Круто и очень не понятно) Буду разбираться

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Добавление фотоальбома в каталог
« Ответ #17 : 02 Февраля 2012, 11:15:13 »
что именно не понятно?

*

Prus

  • *
  • 46
  • +1/-0
    • Просмотр профиля
Re:Добавление фотоальбома в каталог
« Ответ #18 : 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. Как это сделать? Не могу найти где храниться путь именно прямой.

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Добавление фотоальбома в каталог
« Ответ #19 : 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"/>



« Последнее редактирование: 04 Февраля 2012, 22:33:29 от admin »

*

Prus

  • *
  • 46
  • +1/-0
    • Просмотр профиля
Re:Добавление фотоальбома в каталог
« Ответ #20 : 05 Февраля 2012, 03:54:39 »
вот уже становиться ясно.

Оке. А есть где можно посмотреть разбор примеров? Просто есть куча нюансов.
Например вот с тойже ссылкой, как я прочел внутрь скобок такой запрос ставить нельзя.

*

Prus

  • *
  • 46
  • +1/-0
    • Просмотр профиля
Re:Добавление фотоальбома в каталог
« Ответ #21 : 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" />

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

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

Спасибо.

*

BaceH

  • ***
  • 141
  • +21/-0
    • Просмотр профиля
Re:Добавление фотоальбома в каталог
« Ответ #22 : 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
значение из выпадающего списка достается таким же образом, будет только выбранный элемент, если ничего не выбрано записи не будет.

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Добавление фотоальбома в каталог
« Ответ #23 : 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", но вот как?
« Последнее редактирование: 03 Мая 2013, 16:11:50 от Axiomateria »

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Добавление фотоальбома в каталог
« Ответ #24 : 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"/>
Сие успешно применяем, однако что делать, если требуется вывести больше чем один фотоальбом, ну скажем три штуки один за одним ?

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Re:Добавление фотоальбома в каталог
« Ответ #25 : 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>
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Добавление фотоальбома в каталог
« Ответ #26 : 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>

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Re:Добавление фотоальбома в каталог
« Ответ #27 : 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>
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Добавление фотоальбома в каталог
« Ответ #28 : 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>

Не то что бы я любил поспорить, но разница однако имеется, вот та самая страница, которая на данный момент выводит ваш пример кода...
Как мы видим в результате сейчас выводиться две "битых" фотографии...
« Последнее редактирование: 12 Марта 2014, 11:06:43 от Axiomateria »

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Re:Добавление фотоальбома в каталог
« Ответ #29 : 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.
« Последнее редактирование: 12 Марта 2014, 11:27:55 от e.ioffe »
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/