Отключение экспорта виртуальных копий в YML
Материал из Umicms
Версия от 06:19, 29 сентября 2011; VITL' (обсуждение | вклад)
Если в ваших разделах каталога используются "Виртуальные копии" страниц, то при экспорте данных в 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" />