Логотип

Документация по макросам и шаблонам UMI.CMS

$albums = $this->macros('photoalbum', 'album', array($page->getId()))

В XSLT-шаблонизаторе этот макрос возвращает список страниц описаний фотографий.

Доступ непосредственно к свойствам изображения, например, можно осуществлять через протокол UPage, добавив в запросе к id страницы описания ".photo". Так для страницы с id=38 на запрос upage://38.photo будет получен ответ:

<udata generation-time="0.002800">
  <property id="8888" name="photo" type="img_file">
    <title>Фотография</title>
    <value 
     path="./images/cms/data/tree.jpg" 
     size="106744" ext="jpg" 
     width="800"
     height="600">/images/cms/data/tree.jpg</value>
  </property>
</udata>

Пример вызова

udata://photoalbum/album/(/butterfly/)

XML-ответ UData

<udata module="photoalbum" method="album" generation-time="0.011260">
  <id>33</id>
  <link>/butterfly/</link>
  <items>
    <item id="34" link="/butterfly/osen/" xlink:href="upage://34">Осень</item>
    <item id="35" link="/butterfly/ptica/" xlink:href="upage://35">Птица</item>
    <item id="36" link="/butterfly/derevo/" xlink:href="upage://36">Дерево</item>
    <item id="37" link="/butterfly/pustynya/" xlink:href="upage://37">Пустыня</item>
    <item id="38" link="/butterfly/vodopad/" xlink:href="upage://38">Водопад</item>
  </items>
  <total>5</total>
  <per_page>10</per_page>
</udata>

Элементы и атрибуты

<id>

Идентификатор фотоальбома.

<link>

Ссылка на фотоальбом.

<items>

Ветвь, содержащая элементы item — страницы описания фотографий.

<item>

Элемент, содержащий информацию о странице описания для отдельной фотографии.

@id

Идентификатор страницы описания.

@link

Ссылка на страницу описания.

@xlink:href

Ссылка UPage на страницу описания.

<total>

Общее число фотографий в фотоальбоме.

<per_page>

Число отображаемых элементов на странице.

Примеры использования

Выведем все фотографии из альбома с адресом '/butterfly/'.

В шаблоне разметки для страницы используем макрос, и выберем для обработки элементы ветви items:

<xsl:apply-templates select="document('udata://photoalbum/album/(/butterfly/)')/udata/items" />

Для каждого item ветки items выполним запрос по протоколу UPage:

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

Воспользуемся макросом %system makeThumbnail()% и оформим сам шаблон для вывода фотографий:

<xsl:template match="page" mode="photoalbum">

 <xsl:variable name="filepath" select=".//property[@name = 'photo']/value/@path" />

 <table width="100%">
   <tr>
    <td rowspan="2" style="width: 150px;">
     <a href="{@link}">
      <img>
       <xsl:attribute name="src"> 
        <xsl:value-of
         select="document(concat('udata://system/makeThumbnail/(', $filepath, ')/120/', 'auto'))//src" />
       </xsl:attribute>
      </img>
     </a>
    </td>

    <td>
     <a href="{@link}">
      <xsl:value-of select="name" />
     </a>
    </td>
   </tr>

   <tr>
    <td>
     <xsl:value-of select=".//property[@name= 'descr']/value" disable-output-escaping="yes" />
    </td>
   </tr>
 </table>

 <br /><br />

</xsl:template>

Вывод фотографий осуществляется по шаблону, указанному в параметре template. Вы можете не указывать этот параметр, тогда для вывода будет использован шаблон по умолчанию — default.tpl.

Используемые шаблоны

Макрос оперирует шаблонами, находящимися в каталоге /tpls/photalbum/.

Используемые блоки шаблона

album_block

Общий блок для вывода всего списка фотографий.

%lines%

Указывает место, куда будет выведен список фотографий.

%total%

Общее количество фотографий в фотоальбоме.

%per_page%

Количество фотографий на странице. Используется для постраничного вывода. Смотрите макрос %system numpages()% .

album_block_empty

Данный блок выводится, если у Вас нет ни одной фотографии в фотоальбоме.

album_block_line

Блок для вывода информации о каждой фотографии.

%name%

Имя фотографии.

%link%

URL адрес подробного описания фотографии.

%list-class-first%

в случае, если элемент первый, выводит "first"

%list-class-last%

в случае, если элемент последний, выводит "last"

%list-class-odd%

в случае, если элемент четный, выводит "odd"

%list-class-even%

в случае, если элемент нечетный, выводит "even"

%list-position%

вставляет порядковый номер в списке

Примеры использования

Создайте фотоальбом с именем myphotos в модуле «Фотогалереи». Добавьте туда фотографии.

Создайте файл sample.tpl в директории /tpls/photoalbum/ и напишите в нем следующий код:

<?php

$FORMS['album_block'] = <<<END

 %lines%

 %system numpages(%total%, %per_page%)%

END;

$FORMS['album_block_empty'] = <<<END

 <p>В фотоальбоме нет фотографий</p>

END;

$FORMS['album_block_line'] = <<<END

 <table width="100%">
   <tr>
    <td rowspan="2" style="width: 150px;">
     <a href="%link%">
      %data getProperty('%id%', 'photo', 'preview_image')%
     </a>
    </td>

    <td>
     <a href="%link%">
      %name%
     </a>
    </td>
   </tr>

   <tr>
    <td>
     %descr%
    </td>
   </tr>
 </table>

 <br /><br />

END;

?>

Создайте страницу «Мои фотографии» в модуле «Структура». В редакторе содержимого страницы введите макрос %photoalbum album('/myphotos/', 'sample', 10)%. Сохраните страницу. Теперь на созданной странице должен появиться список фотографий альбома myphotos.

Название

%photoalbum album()% — Выводит фотографии указанного фотоальбома.

Параметры: photoalbum album([element_id = 0, template = 'default', limit = 0, ignore_paging = 0])

element_id

id фотоальбома, или путь к нему от корня сайта.

template

Имя шаблона, по которому выводится список фотоальбомов. В XSLT-шаблонизаторе игнорируется, можно указать любое значение.

limit

Максимальное количество выводимых на страницу фотографий.

ignore_paging

Игнорировать переход по страницам. Если поставить значение этого параметра равным "1", и в URL страницы будет присутствовать параметр p, то для этого макроса он будет проигнорирован.

Описание

Макрос выводит список фотографий фотоальбома, указанного в параметре element_id. Если параметр не указан, система берет id текущей страницы.

Количество фотографий, выводимых на странице, можно ограничить параметром limit, например для постраничного вывода. Если этот параметр не указан, выведется количество фотографий, указанное в настройках модуля.

Дополнительные сведения