Не зарегистрирован
Вход
Забыли пароль?
Регистрация
Подписаться
Сэкономьте время — перед вопросом на форуме узнайте, как найти ответ быстрее
По техническим проблемам необходимо обращаться в Консультационный центр

Поиск по форуму: 

Приглашаем в блог Amiro.CMS. Регулярные обзоры, опыт, решения, практикумы.

Форум  ->   Разработка плагинов, вопросы по API  ->  Обработка событий каталога

Раздел для разработчиков. Обсуждение создания плагинов, вопросы и пожелания по API Amiro.CMS

Добавлено: 24.03.14 09:38:11 #16

Партнер


Регистрация: 22.02.09
Сообщений: 465


Обратиться по имени

Здравствуйте!
Скажите, пожалуйста, существует ли все же решение для описанной задачи?
И относительно двух пунктов, описанных в предыдущем сообщении - является ли это ошибкой или я что-то делаю не верно?



Добавлено: 24.03.14 14:01:31 #17



Регистрация: 22.10.12
Сообщений: 73


Обратиться по имени

Evgeney S.:
1. Опытном путем установлено (сейчас еще раз проверил с использованием флага из примера), что событие 'v5_on_generate_eshop_item_keywords' возникает после события 'v5_on_item_prepare'.
Поэтому в обработчике события v5_on_item_prepare не доступен флаг, установленный при обработке события v5_on_generate_eshop_item_keywords (его еще просто не установили).
Наоборот - да, доступен.


Событие v5_on_generate_eshop_item_keywords на данный момент действительно генерируется позже v5_on_item_prepare.

Evgeney S.:

2. В обработчике события 'v5_on_item_prepare' не удается изменить значения кастомных полей.
Т.е. конструкция вида
$aEvent['aData']['custom_field_XXX'] = YYY;
не дает никакого результата. Данные, которые есть в массиве $aEvent['aData'] - да, можно изменить. Но кастомных полей там нет...


Как вариант решения, можно подменять полученные с формы данные внутри обработчика события v5_on_item_prepare, например -

AMI_Event::addHandler('v5_on_item_prepare', 'cstItemPrepareHandler', AMI_Event::MOD_ANY);
function cstItemPrepareHandler($name, array $aEvent, $handlerModId, $srcModId){
    if($aEvent['modId'] == 'eshop_item') {
        $oRequest = AMI::getSingleton('env/request');
        $oRequest->
            set('html_description', $oRequest->get('description', 'p'), 'p')->
            set('custom_field_36', date('d-m-Y H:i:s'), 'p');
        }
    return $aEvent;
}



Добавлено: 26.03.14 10:25:30 #18

Амиро



Регистрация: 21.03.07
Сообщений: 258


Обратиться по имени

Evgeney S.:
2. В обработчике события 'v5_on_item_prepare' не удается изменить значения кастомных полей.
Т.е. конструкция вида $aEvent['aData']['custom_field_XXX'] = YYY; не дает никакого результата. Данные, которые есть в массиве $aEvent['aData'] - да, можно изменить. Но кастомных полей там нет...

В следующей версии системы мы добавим наличие дополнительных полей и возможность их изменения из обработчика события 'v5_on_item_prepare'.



Добавлено: 28.03.14 11:16:51 #19

Партнер


Регистрация: 22.02.09
Сообщений: 465


Обратиться по имени

В итоге задача была решена через подмену данных, полученных с формы внутри обработчика события v5_on_item_prepare, как предложил Dmitry Kornilov.
Спасибо!
Однако не могу сказать, что это именно то, чего я ожидал от реализации обработки события сохранения товара
Антон:
В следующей версии системы мы добавим наличие дополнительных полей и возможность их изменения из обработчика события 'v5_on_item_prepare'.
Отлично!
Однако, даже будь такая возможность сейчас, это бы не решило проблемы.
Т.к. в этом событии так же нет возможности модифицировать мета-данные, а событие v5_on_generate_eshop_item_keywords происходит уже позже.
Поэтому, на мой взгляд, для полноценной работы нужно событие, которое происходит непосредственно перед сохранением данных в БД и в котором можно изменять все те данные, которые сохраняются.
Так же хотелось бы видеть событие, которое происходит непосредственно после сохранения данных элемента в БД (здесь из доступных данных нужны только id модуля и id элемента).
Еще раз спасибо за помощь в решении задачи!



Добавлено: 28.03.14 11:32:43 #20

Амиро



Регистрация: 21.03.07
Сообщений: 258


Обратиться по имени

Evgeney S.:
событие v5_on_generate_eshop_item_keywords происходит уже позже.

Порядок событий тоже изменится, 'v5_on_generate_eshop_item_keywords' будет вызываться перед 'v5_on_item_prepare'.



Добавлено: 28.03.14 11:44:39 #21

Партнер


Регистрация: 22.02.09
Сообщений: 465


Обратиться по имени

Антон:
Порядок событий тоже изменится, 'v5_on_generate_eshop_item_keywords' будет вызываться перед 'v5_on_item_prepare'.

Отлично!



Добавлено: 11.10.14 20:58:38 #22



Регистрация: 26.05.08
Сообщений: 984


Обратиться по имени

Здравствуйте, все.
Сейчас уже запилили задуманное, или планируется в будущих версиях?



Добавлено: 12.10.14 12:18:25 #23

Партнер


Регистрация: 22.02.09
Сообщений: 465


Обратиться по имени

Антон:
В следующей версии системы мы добавим наличие дополнительных полей и возможность их изменения из обработчика события 'v5_on_item_prepare'.
Это в текущей версии точно добавлено. Уже использовал. Все ОК! ))





Создать новую тему

Всего тем: 6587
Всего сообщений: 27636
Всего зарегистрированных пользователей: 47881
Последний зарегистрированный пользователь: user75140008