Изменение значений полей h1 и title при обновлении данных
Материал из Umicms
По умолчанию, шаблон импорта xsl/import/commerceML2.xsl настроен таким образом, что если в 1С было изменено название номенклатуры ("ПолноеНаименование"), то при обновлении данных, значения полей h1 и title останутся неизменными. Это поведение системы прописаны в шаблоне:
<xsl:template match="Товары/Товар"> ... </xsl:template>
блоком:
<group name="common"> <title>Основные параметры</title> <property name="title" type="string"> <title>Поле TITLE</title> <default-value> <xsl:value-of select="$name" /> </default-value> </property> <property name="h1" type="string"> <title>Поле H1</title> <default-value> <xsl:value-of select="$name" /> </default-value> </property> </group>
Значение поля (<xsl:value-of select="$name" />) заключено в тэг <default-value>, вместо <value>, поэтому при повторном импорте, для тех свойств, где стоит <default-value>, уже имеющееся значение не будет перезаписываться.
Чтобы значения полей h1 и title все-таки перезаписывались, необходимо шаблон "Товары/Товар" вынести в custom, т.е. в файл /xsl/import/custom/commerceML2.xsl, изменив <default-value> на <value>. В итоге, шаблон /xsl/import/custom/commerceML2.xsl должен быть следующим:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl" xmlns:udt="http://umi-cms.ru/2007/UData/templates" extension-element-prefixes="php" exclude-result-prefixes="xsl php udt"> <xsl:template match="Товары/Товар"> <xsl:param name="group_id" select="string(Группы/Ид)" /> <xsl:param name="name"> <xsl:choose> <xsl:when test="string-length(ПолноеНаименование)"> <xsl:value-of select="ПолноеНаименование" /> </xsl:when> <xsl:otherwise> <xsl:value-of select="Наименование" /> </xsl:otherwise> </xsl:choose> </xsl:param> <page id="{Ид}" parentId="{$group_id}" type-id="{$group_id}"> <xsl:if test="Статус = 'Удален'"> <xsl:attribute name="is-deleted">1</xsl:attribute> </xsl:if> <xsl:if test="not(Группы/Ид)"> <xsl:attribute name="parentId"> <xsl:value-of select="$catalog-id" /> </xsl:attribute> <xsl:attribute name="type-id">root-catalog-object-type</xsl:attribute> </xsl:if> <default-active> <xsl:value-of select="$catalog_item_activity" /> </default-active> <default-visible> <xsl:value-of select="$catalog_item_visible" /> </default-visible> <basetype module="catalog" method="object">Объекты каталога</basetype> <name> <xsl:value-of select="$name" /> </name> <xsl:if test="string-length($catalog_item_template)"> <default-template> <xsl:value-of select="$catalog_item_template" /> </default-template> </xsl:if> <properties> <group name="common"> <title>Основные параметры</title> <property name="title" type="string"> <title>Поле TITLE</title> <value> <xsl:value-of select="$name" /> </value> </property> <property name="h1" type="string"> <title>Поле H1</title> <value> <xsl:value-of select="$name" /> </value> </property> </group> <group name="product"> <title>1C: Общие свойства</title> <xsl:if test="string-length(Описание)"> <property name="description" title="Описание" type="wysiwyg" allow-runtime-add="1"> <type data-type="wysiwyg" /> <title>Описание</title> <value> <xsl:choose> <xsl:when test="Описание/@ФорматHTML = 'true'"> <xsl:value-of select="Описание"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="php:function('nl2br', string(Описание))" disable-output-escaping="yes" /> </xsl:otherwise> </xsl:choose> </value> </property> </xsl:if> <property name="1c_catalog_id" type="string"> <title>Идентификатор каталога 1С</title> <value> <xsl:value-of select="$catalog-id" /> </value> </property> <property name="1c_product_id" type="string"> <title>Идентификатор в 1С</title> <value> <xsl:value-of select="Ид" /> </value> </property> <property name="artikul" type="string"> <title>Артикул</title> <value> <xsl:value-of select="Артикул" /> </value> </property> <property name="bar_code" type="string"> <title>Штрих-код</title> <value> <xsl:value-of select="Штрихкод" /> </value> </property> <property name="weight" type="float"> <title>Вес</title> <value> <xsl:value-of select="ЗначенияРеквизитов/ЗначениеРеквизита[Наименование = 'Вес']/Значение"/> </value> </property> <xsl:apply-templates select="Картинка" /> </group> <xsl:apply-templates select="ЗначенияСвойств" /> </properties> </page> </xsl:template> </xsl:stylesheet>
