Может уже было, не нашел..
В вики есть статейка по импорту нескольких изображений для одного товара, там только описано как загрузить данные в umi, а примера шаблона нет.
Данные я загрузил, вопрос в так, как их теперь обработать? т.е. у меня в товаре получилось следующее:
<property id="448" name="photo2" type="img_file">
<title>Картинка2</title>
<value path="./images/cms/data/import_files/15/15545916-b8a9-4054-b943-d76dc2c6e14b_2.jpg" folder="/images/cms/data/import_files/15" name="15545916-b8a9-4054-b943-d76dc2c6e14b_2" ext="jpg" width="800" height="382">
/images/cms/data/import_files/15/15545916-b8a9-4054-b943-d76dc2c6e14b_2.jpg
</value>
</property>
<property id="449" name="photo3" type="img_file">
<title>Картинка3</title>
<value path="./images/cms/data/import_files/15/15545916-b8a9-4054-b943-d76dc2c6e14b_3.jpg" folder="/images/cms/data/import_files/15" name="15545916-b8a9-4054-b943-d76dc2c6e14b_3" ext="jpg" width="602" height="600">
/images/cms/data/import_files/15/15545916-b8a9-4054-b943-d76dc2c6e14b_3.jpg
</value>
</property>
как правильно написать шаблон вывода этих изображений, дело в том что их бывает 3, бывает 7
Ваши картинки импортируются в группу полей, к примеру
<group id="286" name="fotos">
<title>Фото</title>
<property id="448" name="photo2" type="img_file">
<title>Картинка2</title>
<value path="./images/cms/data/import_files/15/15545916-b8a9-4054-b943-d76dc2c6e14b_2.jpg" folder="/images/cms/data/import_files/15" name="15545916-b8a9-4054-b943-d76dc2c6e14b_2" ext="jpg" width="800" height="382">
/images/cms/data/import_files/15/15545916-b8a9-4054-b943-d76dc2c6e14b_2.jpg
</value>
</property>
<property id="449" name="photo3" type="img_file">
<title>Картинка3</title>
<value path="./images/cms/data/import_files/15/15545916-b8a9-4054-b943-d76dc2c6e14b_3.jpg" folder="/images/cms/data/import_files/15" name="15545916-b8a9-4054-b943-d76dc2c6e14b_3" ext="jpg" width="602" height="600">
/images/cms/data/import_files/15/15545916-b8a9-4054-b943-d76dc2c6e14b_3.jpg
</value>
</property>
</group>
Вам нужно обработать GROUP. внутри которого хранятся PROPERTY.
К примеру, если вы находитесь внутри объекта, вставляем фото. Предположим, фото будут в маркированном списке ul:
<ul>
<xsl:apply-templates select=".//group[@name='fotos']" mode="foto_list"/>
</ul>
Далее описываем шаблон для фото:
<xsl:template match="property" mode="foto_list">
<li>
<img src="{./value}" alt="./title"/>
</li>
</xsl:template>
Не проверял, писал на лету, но должно быть как-то так..
по умолчанию эти новые поля добавляются в группу:
<group id="1587" name="product">
<title>1C: Общие свойства</title>
ну допустим я вызову шаблон
<xsl:apply-templates select=".//group[@name='product']" mode="foto_list"/>
какой шаблон написать для обработки property в этой группе?
сами property выглядят так:
<property id="448" name="photo2" type="img_file">
<property id="449" name="photo3" type="img_file">
<property id="450" name="photo4" type="img_file">
и их количество может быть различно
может надо как-то так
<xsl:template match="property[@name='^photo']" mode="foto_list">
<li>
<img src="{./value}" alt="./title"/>
</li>
</xsl:template>
я временно так и сделал, через @type='img_file'
^photo не работает (уже проверил), надо наверно substr использовать
проверил, работает такая конструкция:
<xsl:template match="property[substring(@name,1,5)='photo']" mode="foto_list">
немного не кошерно, ^photo было-бы красивее
Всем добрый вечер, помогите разобраться. в похожей схеме.
Создал в типе данных, к которому относится товар, 3 поля типа изображение
В шаблоне xsl пишу
<xsl:template match="udata" mode="object-view">
<xsl:apply-templates select=".//group[@name='photos']" mode="obj-photos" />
далее
<xsl:template match="group" mode="obj-photos" />
<xsl:template match="group[count(property[@type='img_file']) > 0]" mode="object-photos">
<ul>
<xsl:apply-templates select="property[@type='img_file']" mode="obj-photom-item" />
</ul>
</xsl:template>
<xsl:template match="property[position() > 0]" mode="obj-photom-item">
<li>
<img>
<xsl:attribute name="src">
<xsl:call-template name="thumb">
<xsl:with-param name="src" select="value/node()" />
<xsl:with-param name="height">48</xsl:with-param>
<xsl:with-param name="width">auto</xsl:with-param>
</xsl:call-template>
</xsl:attribute>
</img>
</li>
</xsl:template>
Создал товар с этим типом данных и заполнил 2 поля в карточке товара из 3.
У меня выводится 2 картинки и пустая третье поле без картинки, не могу её убрать.
А если ни одно из полей не заполнено, то все равно выводятся пустые картинки.
Подскажите как решить? Спасибо
я временно так и сделал, через @type='img_file'
^photo не работает (уже проверил), надо наверно substr использовать
проверил, работает такая конструкция:
<xsl:template match="property[substring(@name,1,5)='photo']" mode="foto_list">
немного не кошерно, ^photo было-бы красивее
Вы можете использовать xPath функцию contains (смотрите документацию (https://msdn.microsoft.com/ru-ru/library/ms256195.aspx)).
Получится вот такой код (чуть более кошерный)
<xsl:template match="property[contains(@name, 'photo')]" mode="foto_list">
Создал товар с этим типом данных и заполнил 2 поля в карточке товара из 3.
У меня выводится 2 картинки и пустая третье поле без картинки, не могу её убрать.
А если ни одно из полей не заполнено, то все равно выводятся пустые картинки.
Подскажите как решить? Спасибо
Вам нужно добавить проверку на то, что значение существует (и не понял зачем вам проверка на position() > 0)
<xsl:template match="group" mode="obj-photos" />
<xsl:template match="group[count(property[@type='img_file']) > 0]" mode="object-photos">
<ul>
<xsl:apply-templates select="property[@type='img_file']" mode="obj-photom-item" />
</ul>
</xsl:template>
<xsl:template match="property" mode="obj-photom-item" />
<xsl:template match="property[not(value = '')]" mode="obj-photom-item">
<li>
<img>
<xsl:attribute name="src">
<xsl:call-template name="thumb">
<xsl:with-param name="src" select="value/node()" />
<xsl:with-param name="height">48</xsl:with-param>
<xsl:with-param name="width">auto</xsl:with-param>
</xsl:call-template>
</xsl:attribute>
</img>
</li>
</xsl:template>