Фотогалерея для UMI.CMS любой редакции
На wiki есть небольшая
Суть задачи следующая, для любой страницы на сайте (хотя вернее сказать для определенного типа данных, к которому будет относиться эта страница) иметь возможность добавить n-е количество картинок с эфектом FancyBox или Lytebox (или каким-то другим, это уже дело вкуса).
Покажу на примере типа данных "Страница контента". Создадим в блоке "Основные параметры [common]" ещё одно поле "Строка" и назовем её например "Путь к папке с картиками" -> "path_images". В это поле мы пропишем путь к папке с картинками которые у нас будут по плану в нашей фотогалерее и которые предварительно нужно загрузить через FTP или файловый менеджер.
В моём случае этот путь выглядит так: /images/auto .
И теперь для простоты вызова и обработки занесем этот путь в переменную, и заготовка для нашего щаблона будет выглядеть следующим образом:
<xsl:template match="/result[@pageId = '42']"> <xsl:variable name="patch_images" select=".//propery[@name = 'path_images']/value" /> </xsl:template>
Здесь я привязал фотогалерею к старнице с определенным id, но по аналогии можно привязать этот шаблон и к определенному типу данных. И далее пропишем вызов шаблона с параметром, который будет обрабатывать наши картинки и выводить их на страницу.
<xsl:apply-templates select="document(concat('ufs://', $patch_images, '/'))/udata" mode="ufs"> <xsl:with-param name="category_images" select="$patch_images" /> </xsl:apply-templates>
Теперь давайте напишем шаблон для обработки картинок. Выглядеть он будет следующим образом:
<xsl:template match="udata" mode="ufs"> <xsl:param name="category_images" /> <xsl:apply-templates select="file" mode="ufs"> <xsl:with-param name="category_images" select="$category_images" /> </xsl:apply-templates> </xsl:template> <xsl:template match="file" mode="ufs"> <xsl:param name="category_images" /> <xsl:variable name="photo" select="concat($category_images, '/', @name)" /> <xsl:variable name="smallphoto" select="document(concat('udata://system/makeThumbnail/(.', $photo, ')/100/auto/notemplate/0/1'))//src" /> <p class="item_photo"> <a href="{$photo}" class="fancyLink" rel="gallery"> <img src="{$smallphoto}" /> </a> </p> </xsl:template>
Осталось только немного допилить стили (я думаю это уже не столь важно), и фотогалерея готова. Работающий пример фотогалереи Вы можете наблюдать чуть ниже в конце статьи. Также вместо вызова макроса makeThumbnail можно использовать makeThumbnailFull.
Единственно, что в данном примере не очень удобно, это вывод всех картинок сразу на страницу. Поэтому как вариант, здесь можно посоветовать прикрутить немного обработки на javascript, и сделать разбивку на страницы, и выводить уже например по 15 фотографий (это как настроить). Кому интересно могут посмотреть например здесь. Еще как вариант можно прикрутить вызов шаблонов через AJAX, и в итоге получим фотогалерею а-ля картинки от google отдыхают . Но это уже отдельная тема для статьи, и может быть я про это тоже напишу.
11.01.2013