Итак, после прошлого моего поста остались "незаконченные дела": это выставление флага "Новинка" для совсем новых товаров, которых еще не было в каталоге, и учет даты последнего поступления.
1. Добавляем обработчик события OnBeforeIBlockElementAdd, который относится, в отличие от предыдущего, уже к модулю iblock, а не к catalog.
Сначала я скопировала предыдущий код, но, как оказалось, ни одной строчки в нем мне не пригодилось. Ведь в событии Add нам еще неизвестен id добавляемого элемента, а свойства еще не заданы (так что переопределять в цикле их не потребуется).
2. Теперь разберемся с форматом входных данных. Сразу проверяем, чтобы iblock_id был равен 12 (у меня это id каталога) - а то вдруг клиент решил добавить новость.
Формат массива arResult тут несколько другой. Впрочем, доступные нам поля можно посмотреть в документации Битрикса.
ССЫЛКА
3. Задаем массив с определением значения свойства. В массиве нужно будет обратиться к свойству по id, который посмотрим в админке "магазин - свойства товаров".
То есть в нашем массиве мы пропишем id=75 и value=211 (это id значения свойства).
Первая сегодняшняя задача готова!
Теперь нужно подумать над сверкой даты. Скорее всего, придется добавлять поле даты в каждый товар, и снимать флаг новинки, если прошло больше установленого количества дней с этой даты.
Но здесь, получается, проверять придется каждый элемент? Нет, скорее по условию, только те, у которых свойство Новинка установлено.
На каком событии проверять - при обновлении элемента? Но это не гарантирует нам своевременное обновление.
Скорее всего, придется написать агента,который раз в сутки будет проходить по каталогу.
Но об этом в следующих постах.
Комментарии
Отправить комментарий