Нужно для всех товаров указать один шаблон, который не равен шаблону по умолчанию?
Я бы добавил обработчик события, и в нем указал нужный шаблон. Для последних версий юми добавляете файл /classes/modules/exchange/ext/events_exchange_template.php
new umiEventListener('exchangeOnAddElement', 'exchange', 'exchangeSetTemplateElement');
new umiEventListener('exchangeOnUpdateElement', 'exchange', 'exchangeSetTemplateElement');
и файл /classes/modules/exchange/ext/common_exchange_template.php
class common_exchange_template extends exchange {
const template_id_1c = 1;
public function exchangeSetTemplateElement(iUmiEventPoint $eventPoint) {
if($eventPoint->getMode() !== 'after') {
return false;
}
$element = &$eventPoint->getRef('element');
if($element instanceof umiHierarchyElement) {
$element->setTplId(self::template_id_1c);
}
}
}
Если в системе несколько импортов данных (например, есть импорт из CSV), то нужно проверять параметр $eventPoint->getParam('source_id');
В wiki есть другой вариант, но в нем нужно кастомизировать /xsl/import/custom/commerceML2.xsl , что я не очень люблю делать
http://wiki.umisoft.ru/%D0%98%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%BE%D0%B2_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86,_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5_%D1%82%D0%BE%D0%B3%D0%BE_%D0%BA%D0%B0%D0%BA_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D1%83%D0%B6%D0%B5_%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D1%8B_%D0%B8%D0%B7_1%D0%A1
В строчке const template_id_1c = 1;
заменить 1 на id нужного шаблона
Так?
class common_exchange_template extends exchange {
const template_id_1c = 1;
const template_id_1c_2 = 2;
public function exchangeSetTemplateElement(iUmiEventPoint $eventPoint) {
if($eventPoint->getMode() !== 'after') {
return false;
}
$element = &$eventPoint->getRef('element');
if($element instanceof umiHierarchyElement) {
$element->setTplId(self::template_id_1c);
}
else{
$element->setTplId(self::template_id_1c_2);
}
}
}
Ну вообще строка
if($element instanceof umiHierarchyElement) {
означает буквально
Если элемент является объектом типа umiHierarchyElement, то ...
Вот мне интересно, вы сами-то думали, что будет если вызвать метод у объекта, у которого этого метода нет?
Обращаю ваше внимание, что наличие помощи на этом сайте, как и на других подобных сайтах, не избавляет вас от необходимости здраво мыслить и знать азы программирования. Учитесь!
Добрый день! Написал вот такой код, верно или неверно?
class common_exchange_template extends exchange {
const template_id_1c = 3;
const template_id_1c_2 = 4;
public function exchangeSetTemplateElement(iUmiEventPoint $eventPoint) {
if($eventPoint->getMode() !== 'after') {
return false;
}
$element = &$eventPoint->getRef('element');
if($element instanceof umiHierarchyElement){
/*если объект то добавляем шаблон с id 4*/
/*если не объект то шаблон 3*/
if($element->getMethod() == 'object'){
$element->setTplId(self::template_id_1c_2);
}
else{
$element->setTplId(self::template_id_1c);
}
}
}
}