$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>
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>
Элементы и атрибуты
Примеры использования
Выведем все фотографии из альбома с адресом '/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
.
Используемые блоки шаблона
album_block
Общий блок для вывода всего списка фотографий.
- %lines%
-
Указывает место, куда будет выведен список фотографий.
- %total%
-
Общее количество фотографий в фотоальбоме.
- %per_page%
-
Количество фотографий на странице. Используется для постраничного вывода. Смотрите макрос %system numpages()% .
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, например для постраничного вывода. Если этот параметр не указан, выведется количество фотографий, указанное в настройках модуля.