Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Модуль Меню - заголовки для блоков меню их поля "Название"

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 8
Просмотров: 9169
Последний ответ 06 Июня 2014, 12:06:35
от admin
Требуется по "клику" на элемент увеличить значение поля и показать значение

Автор tkalyuginaРаздел JS и AJAX

Ответов: 0
Просмотров: 2500
Последний ответ 02 Сентября 2016, 12:03:55
от tkalyugina
Тип поля "Состаное"

Автор SumrakrndРаздел Настройка системы и модулей

Ответов: 4
Просмотров: 3186
Последний ответ 28 Декабря 2016, 17:14:17
от Sumrakrnd
Задать значени поля тип "Составное"?

Автор muldyРаздел Custom макросы

Ответов: 5
Просмотров: 6203
Последний ответ 14 Апреля 2014, 21:20:45
от ilyar
Мультизагрузка файлов в поля "набор изображения"

Автор atachРаздел Настройка системы и модулей

Ответов: 0
Просмотров: 2091
Последний ответ 26 Апреля 2017, 19:26:48
от atach

0 Пользователей и 1 Гость просматривают эту тему.

*

tatfox

  • *
  • 44
  • +0/-0
    • Просмотр профиля
Доброго времени суток всем!

Синхронизировали сайт с 1С все товары загрузились, но параметр "Шаблон дизайна" указывается только тот который поставлен по умолчанию. Может как то можно указать в 1С шаблон дизайна и указать нужный шаблон?

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Нужно для всех товаров указать один шаблон, который не равен шаблону по умолчанию?

Я бы добавил обработчик события, и в нем указал нужный шаблон. Для последних версий юми добавляете файл /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
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

tatfox

  • *
  • 44
  • +0/-0
    • Просмотр профиля
Нужно для всех товаров указать один шаблон, который не равен шаблону по умолчанию?

Я бы добавил обработчик события, и в нем указал нужный шаблон. Для последних версий юми добавляете файл /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
Нужно просто добавить эти поля без изменение?
new umiEventListener('exchangeOnAddElement', 'exchange', 'exchangeSetTemplateElement');
new umiEventListener('exchangeOnUpdateElement', 'exchange', 'exchangeSetTemplateElement');

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
В строчке
const template_id_1c = 1;
заменить 1 на id нужного шаблона
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

tatfox

  • *
  • 44
  • +0/-0
    • Просмотр профиля
Допустим у меня есть список каталогов, список товаров и карточка товара. Тогда мне нужен 3 шаблона, это для каталога, для товаров и карточки товара. А там можно указать только 1 шаблон

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Вы можете добавить свои условия и проверять $element->getModule() + дополнительные параметры.
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

tatfox

  • *
  • 44
  • +0/-0
    • Просмотр профиля
Вы можете добавить свои условия и проверять $element->getModule() + дополнительные параметры.
а $element->getModule() это где? Хорошо бы если пример был)

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
А что, в указанном коде много где есть переменная $element?
Мой блог http://umicms.me

*

tatfox

  • *
  • 44
  • +0/-0
    • Просмотр профиля
Так?
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);
        }
    }
}

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Ну вообще строка
if($element instanceof umiHierarchyElement) {
означает буквально
Если элемент является объектом типа umiHierarchyElement, то ...

Вот мне интересно, вы сами-то думали, что будет если вызвать метод у объекта, у которого этого метода нет?

Обращаю ваше внимание, что наличие помощи на этом сайте, как и на других подобных сайтах, не избавляет вас от необходимости здраво мыслить и знать азы программирования. Учитесь!
Мой блог http://umicms.me

*

tatfox

  • *
  • 44
  • +0/-0
    • Просмотр профиля
Ну вообще строка
if($element instanceof umiHierarchyElement) {
означает буквально
Если элемент является объектом типа umiHierarchyElement, то ...

Вот мне интересно, вы сами-то думали, что будет если вызвать метод у объекта, у которого этого метода нет?

Обращаю ваше внимание, что наличие помощи на этом сайте, как и на других подобных сайтах, не избавляет вас от необходимости здраво мыслить и знать азы программирования. Учитесь!
Спасибо, буду разбираться

*

tatfox

  • *
  • 44
  • +0/-0
    • Просмотр профиля
Добрый день!  Написал вот такой код, верно или неверно?

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);
        }
           
        }
    }
}
« Последнее редактирование: 17 Июня 2016, 09:10:09 от tatfox »