Перехват почтового события в Битрикс и запись данных в логи
Иногда при отправке письма с сайта необходимо выполнить "под капотом сайта" какие-либо действия. Например, при создании нового заказа срабатывает системное почтовое событие SALE_NEW_ORDER, которое отправляет на почту клиенту данные о его заказе. А мы, допустим, хотим при этом отправить данные о заказе еще куда-то: в CRM, в 1С или в Telegramm. Рассмотрим как это можно сделать. Для начала переопределим событие OnBeforeEventSend, привязав к нему выполнение функции postOrder:
Таким образом перед вызовом события отправки письма будет вызвана функция postOrder. Ниже ее код:
function postOrder($arFields, $arTemplate){
if($arTemplate["EVENT_NAME"] == "SALE_NEW_ORDER"){
//Ваш код
}
return true;
}
Функция принимает два параметра: 1 - массив полей данных, которые передаются в шаблон письма (в нашем случае данные нового заказа); 2 - массив данных самого шаблона. В данном примере мы проверяем, что шаблон привязан к событию SALE_NEW_ORDER. И если это так, то в теле условия пишем нужный нам код.
Решим следующую задачу. Пусть на нужно при создании нового заказа записать в логи данные этого заказа. Точнее записать те данные, которые передаются в почтовый шаблон. Тогда функцию postOrder можно записать так:
В переменную $file помещаем абсолютный путь до файла app.log, в который будут записываться логи. Далее, использую функцию writeLog, поместим массив данных письма $arFields в этот файл. Ниже приведен код функции writeLog:
В сущности можно было обойтись и без этой функции, а добавление осуществить с помощью стандартной функции file_put_contents. Функция writeLog делает вывод форматированным с дополнительными данными.
241027,
Россия,
Брянская область,
поселок Путевка,
улица Рослальская, дом 8, кв.121
Иногда при отправке письма с сайта необходимо выполнить "под капотом сайта" какие-либо действия. Например, при создании нового заказа срабатывает системное почтовое событие SALE_NEW_ORDER, которое отправляет на почту клиенту данные о его заказе. А мы, допустим, хотим при этом отправить данные о заказе еще куда-то: в CRM, в 1С или в Telegramm. Рассмотрим как это можно сделать. Для начала переопределим событие OnBeforeEventSend, привязав к нему выполнение функции postOrder:
Таким образом перед вызовом события отправки письма будет вызвана функция postOrder. Ниже ее код:
function postOrder($arFields, $arTemplate){
if($arTemplate["EVENT_NAME"] == "SALE_NEW_ORDER"){
//Ваш код
}
return true;
}
Функция принимает два параметра: 1 - массив полей данных, которые передаются в шаблон письма (в нашем случае данные нового заказа); 2 - массив данных самого шаблона. В данном примере мы проверяем, что шаблон привязан к событию SALE_NEW_ORDER. И если это так, то в теле условия пишем нужный нам код.
Решим следующую задачу. Пусть на нужно при создании нового заказа записать в логи данные этого заказа. Точнее записать те данные, которые передаются в почтовый шаблон. Тогда функцию postOrder можно записать так:
В переменную $file помещаем абсолютный путь до файла app.log, в который будут записываться логи. Далее, использую функцию writeLog, поместим массив данных письма $arFields в этот файл. Ниже приведен код функции writeLog:
В сущности можно было обойтись и без этой функции, а добавление осуществить с помощью стандартной функции file_put_contents. Функция writeLog делает вывод форматированным с дополнительными данными.
Довольно часто возникает необходимость выводить в публичной части сайта (или не выводить) информацию в зависимости от того авторизован ли пользователь или нет.
Чтобы добавить элемент в инфоблок на Bitrix с помощью API, вы можете использовать метод
Заказать сайт
Авторизация
Восстановление пароля
Для восстановления пароля на указанный вами адрес электронной почты будет выслан новый пароль
Вы успешно зарегистрированы!
На указанный E-mail отправлено письмо со ссылкой для активации учетной записи.
Пароль изменен
На указанный E-mail отправлено письмо с данными для авторизации
Заказать звонок
Оставьте ваши контакты и мы перезвоним вам в ближайшее время
Ваше сообщение успешно отправлено!
Благодарим Вас за обращение в нашу компанию! Мы получили ваше письмо и обязательно рассмотрим его в ближайшее время. Если ваш вопрос срочный, вы можете позвонить нам прямо сейчас по номеру: +7 953 271-62-24
Мы ценим ваше время и приложим максимум усилий, чтобы оперативно решить поставленную задачу!
С уважением,
Команда «BUSSOL»
Купить в 1 клик
Укажите ваши данные и мы свяжемся с Вами для уточнения заказа