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

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

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
можно. Например можно сделать usel выборку для получения фотографии в неограчиненным уровнем вложенности

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Ломаю голову, как сделать главную фотографию альбома ссылкой не на страницу её альбома, где выводятся все фотографии выложенные в ряд, а сразу на сами эти фотографии для просмотра их ряда уже в "лайт-боксе".

То есть у меня на странице объекта выводиться фотоальбом:
<xsl:apply-templates select="document(concat('udata://photoalbum/albums/', //property[@name = 'album_design_layouts']/value/page/@id,'/void/1000'))/udata" mode="album_list"/> 
в виде одной фотографии (верхнее фото в списке этого фотоальбома)

Обрабатывается этот фотоальбом вот так:
    <xsl:template match="result[@module = 'photoalbum' and @method = 'album' and page/@type-id=152]">
        <xsl:apply-templates select="document(concat('udata://photoalbum/albums/',$document-page-id))/udata" mode="album_list" />
    </xsl:template>
   
    <xsl:template match="udata[@module = 'photoalbum' and @method = 'albums']" mode="album_list" />
 
    <xsl:template match="udata[@module = 'photoalbum' and @method = 'albums' and total]" mode="album_list">
        <div class="photoalbums">           
            <xsl:value-of select="document(concat('upage://',@id,'.snippet_album'))/udata/property/value" disable-output-escaping="yes" />                          
            <xsl:apply-templates select="items/item" mode="album_list" />     
        </div>
        <xsl:apply-templates select="total" />
    </xsl:template>
 
    <xsl:template match="item" mode="album_list">
        <xsl:apply-templates select="document(concat('upage://',@id))/udata/page" mode="album_list" />
    </xsl:template>
 
    <xsl:template match="page" mode="album_list">
            <xsl:apply-templates select="document(concat('udata://photoalbum/album/',@id,'//1/1'))/udata" mode="album_first_photo"/>   
            <a href="{@link}">
                <xsl:value-of select="//property[@name = 'h1']/value" />
            </a>       
    </xsl:template>

    <xsl:template match="udata[@module = 'photoalbum' and @method = 'album']" mode="album_first_photo">
        <img src="&empty-photo;" alt="{$altimg}" />
    </xsl:template>
 
    <xsl:template match="udata[@module = 'photoalbum' and @method = 'album' and total]" mode="album_first_photo">
        <xsl:apply-templates select="items/item" mode="album_first_photo" />
    </xsl:template>
         
    <xsl:template match="item" mode="album_first_photo">
       
        <xsl:variable name="src" select="document(concat('upage://',@id,'.photo'))/udata//value" />     
        <a href="{$src}" class="fancybox-thumbs" rel="media-gallery" title="{.//property[@name='title']/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">450</xsl:with-param>
                <xsl:with-param name="height">450</xsl:with-param>
            </xsl:call-template>
        </a>
    </xsl:template>
- где при нажатии на эту одну фотографию в лайт-боксе она одна и загружается...
Видимо причина её одинокой загрузки - это указанные единички в:
<xsl:apply-templates select="document(concat('udata://photoalbum/album/',@id,'//1/1'))/udata" mode="album_first_photo"/>

Однако что ж делать, если надо подгрузить в лайт-боксе фотографии ?

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Наверное будет проще просто в объекте каталога сделать поле для загрузки одной фотографии как бы "главной" фотоальбома, на который и подвесить уже ссылку на ярд его фотографий

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Вопрос не в этом. Вы  написали шаблоны, которые выведут список фотоальбомов. Каждый фотоальбом выведет свою обложку. В данный момент, вы выводите первую фотку из альбома. Можно сделать и спец поле в самом фотоальбоме для обложки и выводить его, но это не влияет на вашу проблему лайтбокса, который бы прокручивал все фотки фотоальбома.

Для того, чтобы он начал отображать все фотки, которые есть в вашем фотоальбоме, вам необходимо указать fancybox'у список фотографий.

Обычно это делается выводом в html список этих фоток, внутри ссылок со спец классом (у вас сейчас в таком виде выводиться только первая фотка). Можно подгрузить остальные фото фотоальбома в скрытом блоке и указать на него js'е, но это не верно, так как лишняя нагрузка при формировании html. Лучше подгрузить остальные фото в виде js кода, который сформирует список фотографий, которые будет отображать fancybox. Пример есть на самом сайте fancybox ( Method two - Open fancyBox manually) или вот, прямая ссылка на пример
« Последнее редактирование: 19 Января 2014, 14:38:28 от admin »

*

john

  • ***
  • 207
  • +6/-0
    • Просмотр профиля
А как задать вывод определенного количества символов?
Необходимо чтобы не весь текст выводился, а например всего 50 символов и.....
<div umi:element-id="{@id}" umi:field-name="descr">
                    <xsl:value-of select="//property[@name = 'descr']/value" disable-output-escaping="yes" />
                </div>

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля

*

savinov80

  • *
  • 2
  • +0/-0
    • Просмотр профиля
Посмотрел ваш урок и попытался прикрутить это к своему сайту (у меня шаблон demohunt), но не заработало, возможно проблема в выводе?
Мои действия: Я создал файл album.xsl и подключил его к шаблону.
Прошу помочь, что я сделал не так?

*

NOIRMAN

  • *****
  • 101
  • +16/-1
    • Просмотр профиля
Для полноты картины хотелось бы узнать что не получилось, какую ошибку выдала система и что Вы вообще сделали (ну это уже на уровне кода) ... Иначе ответа можно долго ждать  ::)

*

john

  • ***
  • 207
  • +6/-0
    • Просмотр профиля
Подскажите как вывести список фотоальбомов из конкретного раздела?
<xsl:apply-templates select="document('udata://photoalbum/albums/',$pageId)/udata" />
Так выводятся все списки.
А мне надо что входит в раздел pageId - 227

*

NOIRMAN

  • *****
  • 101
  • +16/-1
    • Просмотр профиля
Подозреваю, что вызов происходит вне зоны видимости переменной pageId или она не объявлена ранее.

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Подскажите как вывести список фотоальбомов из конкретного раздела?
<xsl:apply-templates select="document('udata://photoalbum/albums/',$pageId)/udata" />
Так выводятся все списки.
А мне надо что входит в раздел pageId - 227

если вы хотите в document() вставить строчку сформированную из параметров\переменных\строк, то вам следует использовать concat()

<xsl:apply-templates select="document(concat('udata://photoalbum/albums/',$pageId))/udata" />