Назад

1С-Битрикс – уведомление на почту после добавления элемента в инфоблок

Главная
Блог
1С-Битрикс – уведомление на почту после добавления элемента в инфоблок

Зачем нужны уведомления о новых элементах

В CMS 1С-Битрикс часто используется механизм инфоблоков для хранения различного контента:

  • Товары и услуги

  • Новости и статьи

  • Заявки и обращения

  • Отзывы и комментарии

При этом новые элементы могут:

  • Требовать модерации перед публикацией
  • Нуждаться в оперативной обработке (например, заказы)
  • Быть частью важных бизнес-процессов

Автоматические уведомления решают эти задачи, избавляя от необходимости постоянной проверки административного раздела.

Базовый способ: обработчик события OnAfterIBlockElementAdd

1. Создаем обработчик

Добавьте в файл /bitrix/php_interface/init.php:

<?php
AddEventHandler("iblock", "OnAfterIBlockElementAdd", "notifyAboutNewElement");

function notifyAboutNewElement(&$arFields) {
    // Укажите ID вашего инфоблока
    $targetIblockId = 22; 
    
    if ($arFields["IBLOCK_ID"] == $targetIblockId) {
        $adminEmail = COption::GetOptionString("main", "email_from");
        $iblockName = CIBlock::GetByID($targetIblockId)->Fetch()['NAME'];
        
        $subject = "Добавлен новый элемент в инфоблок «{$iblockName}»";
        
        $message = "
            <h3>Новый элемент #{$arFields['ID']}</h3>
            <p><strong>Название:</strong> {$arFields['NAME']}</p>
            <p><strong>Дата создания:</strong> ".FormatDate('j F Y H:i')."</p>
        ";
        
        if (!empty($arFields['PREVIEW_TEXT'])) {
            $message .= "<p><strong>Описание:</strong> {$arFields['PREVIEW_TEXT']}</p>";
        }
        
        $message .= "
            <p>
                <a href='/bitrix/admin/iblock_element_edit.php?IBLOCK_ID={$targetIblockId}&type=content&ID={$arFields['ID']}'>
                    Редактировать элемент
                </a>
            </p>
        ";
        
        CEvent::SendImmediate(
            "IBLOCK_NEW_ELEMENT",
            SITE_ID,
            array(
                "EMAIL_TO" => $adminEmail,
                "SUBJECT" => $subject,
                "BODY" => $message,
            )
        );
    }
}

2. Особенности реализации

  • Гибкая фильтрация по ID инфоблока
  • Автоматическое определение email из настроек сайта
  • Ссылка на редактирование элемента в админке
  • Адаптивный формат письма (HTML)

Продвинутый вариант: использование почтовых шаблонов

1. Создаем почтовый шаблон

  1. Перейдите в Контент → Почтовые шаблоны

  2. Добавьте новый шаблон:

    • Тип события: IBLOCK_ELEMENT_ADDED

    • Тема: Новый элемент #ELEMENT_ID# в #IBLOCK_NAME#

    • Тело письма:

    <p>На сайте #SITE_NAME# создан новый элемент.</p>
    
    <h3>#ELEMENT_NAME#</h3>
    <p>Тип: #IBLOCK_NAME#</p>
    <p>Дата: #DATE_CREATE#</p>
    
    #if PREVIEW_TEXT#
    <div style="background:#f5f5f5;padding:15px;margin:10px 0;">
        #PREVIEW_TEXT#
    </div>
    #endif#
    
    <p>
        <a href="#ADMIN_LINK#">Перейти к редактированию</a>
    </p>

2. Модифицируем обработчик

AddEventHandler("iblock", "OnAfterIBlockElementAdd", "notifyAboutNewElement");

function notifyAboutNewElement(&$arFields) {
    $targetIblocks = [22, 33]; // Массив ID отслеживаемых инфоблоков
    
    if (in_array($arFields["IBLOCK_ID"], $targetIblocks)) {
        $iblockInfo = CIBlock::GetByID($arFields["IBLOCK_ID"])->Fetch();
        
        CEvent::Send(
            "IBLOCK_ELEMENT_ADDED",
            SITE_ID,
            array(
                "ELEMENT_ID" => $arFields['ID'],
                "ELEMENT_NAME" => $arFields['NAME'],
                "IBLOCK_NAME" => $iblockInfo['NAME'],
                "PREVIEW_TEXT" => $arFields['PREVIEW_TEXT'],
                "DATE_CREATE" => FormatDate('j F Y H:i'),
                "ADMIN_LINK" => "/bitrix/admin/iblock_element_edit.php?IBLOCK_ID="
                              .$arFields["IBLOCK_ID"]."&type=content&ID=".$arFields['ID']
            ),
            "Y" // Отправить копию на email из настроек
        );
    }
}

Дополнительные возможности

1. Отправка разным адресатам в зависимости от инфоблока

$recipients = [
    22 => ['admin@site.com', 'content@site.com'], // Для инфоблока 22
    33 => ['sales@site.com', 'manager@site.com']  // Для инфоблока 33
];

if (isset($recipients[$arFields["IBLOCK_ID"]])) {
    foreach ($recipients[$arFields["IBLOCK_ID"]] as $email) {
        CEvent::Send(...);
    }
}

2. Включение свойств элемента

$props = CIBlockElement::GetProperty(
    $arFields["IBLOCK_ID"],
    $arFields['ID']
);

while ($prop = $props->Fetch()) {
    if ($prop['VALUE']) {
        $message .= "<p><strong>{$prop['NAME']}:</strong> {$prop['VALUE']}</p>";
    }
}

3. Обработка только активных элементов

if ($arFields["ACTIVE"] == 'Y') {
    // Отправляем уведомление только для активных элементов
}

Частые вопросы

Q: Как проверить работу обработчика?
A: Добавьте временный код для логирования:

AddMessage2Log("Элемент {$arFields['ID']} добавлен в инфоблок {$arFields["IBLOCK_ID"]}", "iblock");

Q: Можно ли отправлять SMS вместо email?
A: Да, используйте аналогичный обработчик с подключением SMS-шлюза.

Q: Как избежать спама при массовом импорте?
A: Добавьте проверку:

if (defined('BX_CRONTAB') || defined('BX_IMPORT')) {
    return; // Не отправляем при импорте или по cron
}

Заключение

Представленные решения позволяют:

  1. Гибко настраивать уведомления для любых инфоблоков

  2. Контролировать важные изменения контента

  3. Интегрировать с бизнес-процессами компании

Для сложных сценариев рассмотрите использование:

  • Бизнес-процессов в модуле workflow

  • Обработчиков OnAfterIBlockElementUpdate для отслеживания изменений

  • Интеграции с мессенджерами (Telegram, Slack)

Настроив автоматические уведомления, вы значительно повысите эффективность работы с контентом в Битрикс!

Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Читайте по теме
Все статьи
Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Все статьи