Несколько изображений к товару средствами модуля Фотогалереи

Материал из Umicms
Перейти к:навигация, поиск

Актуально для версии 2.9.5

Задача

Вывести на сайте несколько изображений к товару, не прибегая к созданию дополнительных папок или полей.

Решение

Задачу можно решить средствами модуля "Фотогалереи", ниже дан пример.

Вариант 1

1) Создадим в типе данных, к которому относится товар, поле типа ссылка на дерево:

Symlink field.png

2) Создадим товар с этим типом данных и заполним созданное поле в карточке товара:

Symlink page.png

3) Теперь осталось это вывести, вывод в tpl есть в статье Добавление_нескольких_фотографий_к_описанию_объекта_каталога, второй вариант. В xslt же все еще проще, у нас будет примерно следующий xml документ, который нужно обработать:

<group id="5585" name="kartinki">
	<title>Картинки</title>
	<property id="979" name="pictures" type="symlink">
		<title>Фотографии</title>
		<value>
			<page id="5316" parentId="5315" link="/testovyj_fotoalbom/fotografiya_1/" is-active="1" object-id="5733" type-id="74" type-guid="photoalbum-photo" update-time="1395411568" alt-name="fotografiya_1" xlink:href="upage://5316">
				<basetype id="46" module="photoalbum" method="photo">Фотография</basetype>
				<name>Фотография 1</name>
			</page>
			<page id="5317" parentId="5315" link="/testovyj_fotoalbom/photografiya_2/" is-active="1" object-id="5734" type-id="74" type-guid="photoalbum-photo" update-time="1395411993" alt-name="photografiya_2" xlink:href="upage://5317">
				<basetype id="46" module="photoalbum" method="photo">Фотография</basetype>
				<name>Фотография 2</name>
			</page>
			<page id="5318" parentId="5315" link="/testovyj_fotoalbom/fotografiya_2/" is-active="1" object-id="5735" type-id="74" type-guid="photoalbum-photo" update-time="1395411640" alt-name="fotografiya_2" xlink:href="upage://5318">
				<basetype id="46" module="photoalbum" method="photo">Фотография</basetype>
				<name>Фотография 3</name>
			</page>
			<page id="5319" parentId="5315" link="/testovyj_fotoalbom/fotografiya_4/" is-active="1" object-id="5736" type-id="74" type-guid="photoalbum-photo" update-time="1395411634" alt-name="fotografiya_4" xlink:href="upage://5319">
				<basetype id="46" module="photoalbum" method="photo">Фотография</basetype>
				<name>Фотография 4</name>
			</page>
			<page id="5320" parentId="5315" link="/testovyj_fotoalbom/fotografiya_5/" is-active="1" object-id="5737" type-id="74" type-guid="photoalbum-photo" update-time="1395411658" alt-name="fotografiya_5" xlink:href="upage://5320">
				<basetype id="46" module="photoalbum" method="photo">Фотография</basetype>
				<name>Фотография 5</name>
			</page>
			<page id="5321" parentId="5315" link="/testovyj_fotoalbom/fotografiya_6/" is-active="1" object-id="5738" type-id="74" type-guid="photoalbum-photo" update-time="1395411690" alt-name="fotografiya_6" xlink:href="upage://5321">
				<basetype id="46" module="photoalbum" method="photo">Фотография</basetype>
				<name>Фотография 6</name>
			</page>
		</value>
	</property>
</group>

Обработать это дерево можно с помощью следующей конструкции:

<div style="max-width: 300; max-height: 300;">
	<ul class="bxslider">
		<xsl:for-each select="./page/properties/group[@name = 'kartinki']/property[@name = 'pictures']/value/page">
			<li>
				<xsl:apply-templates select="document(concat('udata://system/makeThumbnail/(.', document(concat('upage://', ./@id,  '.photo'))//value, ')/200/auto'))"/>
			</li>
		</xsl:for-each>
	</ul>
</div>

и шаблона, знакомого нам по статье Несколько_изображений_к_товару_средствами_протокола_ufs (bxslider мы берем оттуда же):

<xsl:template match="udata[@module = 'system' and @method = 'makeThumbnail']">
	<img src="{src}"/>
</xsl:template>