Почтовое событие на создание нового элемента инфоблока, через API

Просмотров: 22452

Иногда при разработке сайта требуется реализовать функционал добавления элементов инфоблока простыми пользователям.Будет достаточно удобно если, после создания новости, модератор будет получать письмо о создании нового элемента. Сделать это можно через событие OnBeforeIBlockElementAdd

Например: на сайте создана "форма добавления элементов" и пользователи сайта могут предлагать новости для размещения на сайте. Однако, новость публикуется не сразу, а после проверки модератором

Будет достаточно удобно если, после создания новости, модератор будет получать письмо о создании нового элемента. Сделать это можно через событие OnBeforeIBlockElementAdd- вызывается до вставки элемента информационного блока, и может быть использовано для отмены вставки или переопределения некоторых полей.

Почтовое уведомление о добавлении новости

Итак: мы создали инфоблок "Народные новости", ID которого 82, и есть несколько свойств:
Ссылка на источник - с ID 143
Адрес новости - c ID 153
Автор новости - с ID 154

Также создаем новый тип почтового события "NEW_ELEMET_ADDED"

И само письмо которое будет отправляться администратору (или по любому, другому адресу). В котором передаем следующие данные:


Уважаемый администратор, на сайте появилась новая новость)
Проверьте и опубликуйте ее
Название: #ADD_NAME#
Текст анонса:
#ADD_ANOUNCE#
Текст подробно:
#ADD_DETAIL#
Источник: #ADD_SOURCE#
Ссылка на новость: #ADD_LINK#
Автор новости: #ADD_AUTOR#

Создание почтового события методом CEvent::Send

И самое главное, это создать обработчик который будет при добавлении элемента, создавать почтовое событие со всеми данными, для этого воспользуемся методом CEvent::Send

Создаем файл init.php в директории /local/php_interface -и добавляем внего следующий код. Подсказки по коду прямо в нем:

//Регистрируем обработчик именем функции будет IBFeedForm
AddEventHandler('iblock', 'OnBeforeIBlockElementAdd', 'IBFeedForm');
//Описываем функцию
function IBFeedForm(&$arFields)
{
	//Создаем переменные, внутри которых прописываем:
	$SITE_ID = 's1'; //Индетификатор сайта
	$IBLOCK_ID = 82; //Индетификатор инфоблока с новостями
	$EVEN_TYPE = 'NEW_ELEMET_ADDED'; // Тип почтового события (создавали выше)

	if ($arFields['IBLOCK_ID'] == $IBLOCK_ID) {

	//Собираем в массив все данные, которые хотим передать в письмо
	//Перечисляем все поля как в почтовом событии
	$arFeedForm = array(

	//Стандартные поля инфоблока
	"ADD_NAME" => $arFields['NAME'], //Название новости
	"ADD_ANOUNCE" => $arFields['PREVIEW_TEXT'], //Анонс
	"ADD_DETAIL" => $arFields['DETAIL_TEXT'],  //Детальное описание

	//Свойства инфоблока - просто перечисляем ID всех нужных свойств     
	"ADD_SOURCE" => $arFields['PROPERTY_VALUES']['143'],
	"ADD_LINK" => $arFields['PROPERTY_VALUES']['153'],
	"ADD_AUTOR" => $arFields['PROPERTY_VALUES']['154'],
	);

	//И собственно, собираем все это в метод
	//Который создаст наше почтовое событие
	CEvent::Send($EVEN_TYPE, $SITE_ID, $arFeedForm );
	}
}

Обязательно, поле того как скопируете код события, удалите все переносы строк (да и комментарии). Оставил в примере, что бы было понятнее и нагляднее

Стоимость разработки на 1С-Битрикс:

Индивидуальная разработка магазина

от 500 000 руб. от 5-ти недель

Разработка магазина на 1С-Битрикс с нуля. Дизайн, сборка и оптимизация производительности под конкретный проект и требования. Реализация любого функционала без ограничений готовых решений.

Запуск сайта на готовом решении

от 100 000 руб. от 7-ми дней

Вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Магазин, быстро запускается на базе одного из 200-та готовых решений.

Мобильное приложение

от 500 000 руб. от 1-го месяца

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Сайт компании

от 350 000 руб. от 1-го месяца

Корпоративный сайт с информационными разделами, каталогом товаров или услуг. Включает формы обратной связи карточек каталога, любое количество статичных и динамичных разделов.

Инфресурс

от 400 000 руб. от 5-ти недель

Информационный ресурс любой сложности. Сайт для СМИ, городской портал или многопользовательская доска объявлений. Внутренние форумы, блоги- по необходимости.

Лечение сайтов от вирусов

от 40 000 руб. от 2-х дней

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