Иногда при разработке сайта требуется реализовать функционал добавления элементов инфоблока простыми пользователям. Например: на сайте создана "форма добавления элементов" и пользователи сайта могут предлагать новости для размещения на сайте. Однако, новость публикуется не сразу, а после проверки модератором
Будет достаточно удобно если, после создания новости, модератор будет получать письмо о создании нового элемента. Сделать это можно через событие OnBeforeIBlockElementAdd- вызывается до вставки элемента информационного блока, и может быть использовано для отмены вставки или переопределения некоторых полей.
Итак: мы создали инфоблок "Народные новости", ID которого 82, и есть несколько свойств:
Ссылка на источник - с ID 143
Адрес новости - c ID 153
Автор новости - с ID 154
Также создаем новый тип почтового события "NEW_ELEMET_ADDED"
И само письмо которое будет отправляться администратору (или по любому, другому адресу). В котором передаем следующие данные:
Уважаемый администратор, на сайте появилась новая новость)И самое главное, это создать обработчик который будет при добавлении элемента, создавать почтовое событие со всеми данными, для этого воспользуемся методом 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 ); } }
Обязательно, поле того как скопируете код события, удалите все переносы строк (да и комментарии). Оставил в примере, что бы было понятнее и нагляднее
В общем-то и все. Все вопросы в комментарии.
![]()
Nikita Androsov
|
вопросик, как нам вытащить ссылку на созданный элемент инфоблока ?
допустим для отправки этой ссылки администратору сайта, который будет решать дальнейшую судьбу предложенной новости. |
![]()
Михаил Базаров
|
||||||
|
||||||
![]()
Андрей Колчанов
|
||||
Еще раз здравствуйте!
Сейчас пытаюсь "соединить" и эту заметку. С помощью формы создаутся данные в инфоблоке, письмо уходить но приходить так (кусок кода): ... Размер кухни: "ADD_SIZE" Стиль: "ADD_STYLE" ... В обработчике формы код такой:
в intuit.php
|
||||
![]()
Андрей Колчанов
|
Если в шаблоне делаю так (и отправляю через форму):
Размер кухни: #ADD_SIZE# Стиль: #ADD_STYLE# То в письме приходит: Размер кухни: Стиль: Если создаю через админку то приходит: Размер кухни: 400х400x100 Стиль: 15 У свойства Размер кухни тип поля Строка У свойства Стиль - Список |
На нем, уже много видеоуроков по 1С-Битрикс. Как одиночные видео так и серии видеоуроков Перейти на канал
Совсем скоро выйдет видеокурс по разработке доски объявлений с мобильным приложением. Подписывайтесь и будьте в курсе: