Отключение экспорта виртуальных копий в YML
Материал из Umicms
Если в ваших разделах каталога используются "Виртуальные копии" страниц, то при экспорте данных в YandexMarket, в итоговые данные попадет как исходная страница (объект каталога), так и все виртуальные копии. Чтобы избежать попадания в экспорт виртуальных копий, воспользуемся кастомным методом, который добавим в файл classes/modules/custom.php:
public function is_virtual($id) { $page_id = (int) $id; $h = umiHierarchy::getInstance(); //экземпляр страницы $element = $h->getElement($page_id); if($element){ // object_id - id источника данных $object_id = $element->getObjectId(); // список всех страниц, которые используют данный объект $arr_id = $h->getObjectInstances($object_id); // первая страница, это страница с наименьшим page_id, т.е. исходная страница if($arr_id[0] != $page_id) return 1; return 0; }else return 0; }
Далее, необходимо из файла xsl/export/YML.xsl, скопировать блок:
<xsl:template match="page[basetype/@method = 'object']"> ... <xsl:template>
в файл xsl/export/custom/YML.xsl.
Строку:
<xsl:if test="$price > 0">
необходимо заменить на:
<xsl:if test="$price > 0 and $is_virtual != '1'">
и перед этой строкой определить параметр:
<xsl:param name="is_virtual" select="document(concat('udata://custom/is_virtual/', @id))/udata" />
