8 800 500-47-11
8 800 500-47-11
Отдел продаж
База знаний
  • Все решения
  • Интернет-магазины
    • Аспро: Премьер
    • Аспро: Лайтшоп
    • Аспро: Максимум
    • Аспро: Шины и диски 2.0
    • Аспро: Next
    • Аспро: Оптимус
    • Аспро: Шины и диски, интернет-магазин
    • Аспро: Маркет
    • Аспро: Интернет-магазин
    • Аспро: Крутой шоп
  • Корпоративные сайты
    • Аспро: Приорити 2.0
    • Аспро: Корпоративный сайт 3.0
    • Аспро: Корпоративный сайт 2.0
    • Аспро: Стройка 2.0
    • Аспро: Инжиниринг
    • Аспро: Металл
    • Аспро: Digital 2.0
    • Аспро: Детский сад и образовательный центр
    • Аспро: Курорт 2.0
    • Аспро: Ландшафт 2.0
    • Аспро: Автосервис
    • Аспро: Медицинский центр 3.0
    • Аспро: Ландшафт
    • Аспро: Медицинский центр 2.0
    • Аспро: Курорт
    • Аспро: Стройка
    • Аспро: Сайт медицинского центра
    • Аспро: Корпорация
    • Аспро: Корпоративный сайт
    • Аспро: Корпоративный сайт современной компании
    • Аспро: Приорити
    • Аспро: Digital
  • Модули
    • Аспро: Привязка ответственного
    • Аспро: Шинный калькулятор
    • Аспро: Кредитный калькулятор
    • Аспро: Универсальный импорт
  • 1С-Битрикс
    • Общее

Как настроить почтовые уведомления о новых отзывах в карточке товара?

ID статьи: 106 , создана 23 авг 2016 , последнее исправление  14 мар 2019
Актуально для:
Необходимо, чтобы администратор получал на почту уведомления о новых отзывах в карточке товара и имел возможность их модерировать (удалять и публиковать).

Решение

Настройте форум для публикации отзывов и создайте почтовое событие.


Шаг 1

В административной части сайта перейдите в настройки списка форумов: Рабочий стол → Сервисы → Форумы → Список форумов. Выберите форум, настроенный на вашем сайте на публикацию и хранение отзывов (скорее всего, он будет в списке единственный) и войдите в режим редактирования через кнопку «гамбургер» и пункт «Изменить». Если у вас не создано ни одного форума для отзывов, создайте его с помощью инструкции.


Переключитесь на вкладку «Настройки». В поле «Модерация» поставьте галочку в пункте «Премодерируемый».


Это позволит публиковать отзывы не напрямую, а после одобрения администратора.


Шаг 2

Создаем для начала новый тип почтового события.

Перейдите в Рабочий стол → Настройки → Настройки продукта → Почтовые события → Типы почтовых событий. Нажмите кнопку «Добавить тип».


Тип почтового события пропишите как NEW_ITEM_REVIEW. В описание вставьте следующий код:

#ITEM_NAME# – товар получивший отзыв
#AUTHOR_NAME# – автор
#POST_DATE# – дата
#POST_MESSAGE# – отзыв
#PATH2ITEM# – относительная ссылка


Теперь создаем новый почтовый шаблон для этого события.

Перейдите в Рабочий стол → Настройки → Настройки продукта → Почтовые события → Почтовые шаблоны. Нажмите кнопку «Добавить шаблон».


В настройках нового шаблона пропишите следующие настройки:

  • Выберите сайт, для которого будет действовать шаблон, если у вас несколько сайтов на одной платформе.

  • Выберите тип почтового события из списка. В нашем случае это новый отзыв к товару (так мы назвали новое почтовое событие) [NEW_ITEM_REVIEW] (этот тип мы присвоили событию).

  • Пропишите в полях «От кого» и «Кому» соответствующие адреса электронной почты или специальные коды:
    от кого: #DEFAULT_EMAIL_FROM#
    кому: #DEFAULT_EMAIL_FROM#.
    В случае с кодами адреса будут генерироваться автоматически в зависимости от настроек сайта и внесенных данных

  • Пропишите с поле «Тема» следующую фразу: #SITE_NAME# и новый отзыв к товару #ITEM_NAME#.
    Вместо кодов в готовом письме пропишутся название сайта и название товара

  • В поле «Сообщение» вставьте следующий текст:
    Информационное сообщение с сайта #SITE_NAME#
    <br>
    <hr>
    Добавлен новый отзыв к товару:
    <br>
    #ITEM_NAME#
    <hr>
    Содержание:
    <br>
    автор: #AUTHOR_NAME#
    <br>
    отзыв: #POST_MESSAGE# 
    <br>
    ссылка на товар: https://#SERVER_NAME##PATH2ITEM# 

Или создайте свой, используя эти метки. 


Запомните ID шаблона (он еще понадобится нам в дальнейшем). В нашем случае он равен 78.


Шаг 3

Отредактируйте файл init.php, добавив в него фрагмент кода. 

Внимание! Файл init.php редактируется только по ftp/ Если его нет, то создайте его также по ftp. Редактирование кода файла через структуру сайта может привести к падению всего сайта.

Перед любыми правками кода в структуре сайта настоятельно рекомендуем сделать внеплановую резервную копию сайта. Правки вносите с особой внимательностью: синтаксические ошибки в коде могут привести к нестабильной работе сайта.


Далее сформируйте код для вставки в файл.

<?function notifyNewItemFeedback($ID, $arFields){
ob_start();
$res = CIBlockElement::GetList(
array(),
array(
'IBLOCK_ID' => id_инфоблока_каталога,
'PROPERTY_FORUM_TOPIC_ID' => $arFields["TOPIC_ID"]
),
false,
false,
array('*', 'IBLOCK_ID', 'ID', 'NAME', 'PROPERTY_FORUM_TOPIC_ID', 'SECTION_ID', 'SECTION', 'SECTIONS')
);
if($ar_res = $res->GetNext()){
var_dump(date('d.m.Y H:i:s'));
echo 'найден товар '.$ar_res['NAME'];
$TYPE_MAIL_EVENT = 'NEW_ITEM_REVIEW';
var_dump($ar_res);
$arMail = array(
'ITEM_NAME' => $ar_res['NAME'],
'AUTHOR_NAME' => $arFields['AUTHOR_NAME'],
'POST_DATE' => date('d.m.Y H:i:s'),
'POST_MESSAGE' => $arFields['POST_MESSAGE'],
'PATH2ITEM' => $ar_res['DETAIL_PAGE_URL'],
);
var_dump($arMail);
$ID_MAIL_EVENT = id_почтового_шаблона;
$ok = CEvent::Send($TYPE_MAIL_EVENT, "id_сайта", $arMail, $ID_MAIL_EVENT);
if ($ok){
echo 'Сообщение отправлено';
}
else{
'Сообщение не отправлено '.$ok;
}
}
else{
echo 'Элемент не найден.';
$dump = ob_get_clean();
if (!empty($ok)){
return true;
}
else{
$filename = dirname(__FILE__).'/dump.txt';
if (!file_exists($filename)){
$f = fopen($filename, 'w+');
fclose($f);
} 
file_put_contents($filename, $dump);
}
}
}
AddEventHandler("forum", "onAfterMessageAdd", "notifyNewItemFeedback"); ?>

Где:

  • id_инфоблока – id действующего инфоблока каталога
  •  id_шаблона – id нашего нового почтового шаблона, созданного на предыдущем этапе (шаг 2)
  •  id_сайта – номер сайта для которого вы настраиваете почтовые уведомления о новых отзывах. 

    Посмотреть id сайта можно в настройках списка сайтов: Настройки → Настройки продукта → Сайты → Список сайтов. В нашем случае id сайта равняется s1. 


Чтобы узнать ID инфоблока каталога, перейдите в Рабочий стол → Контент → Инфоблоки → Типы инфоблоков → Каталог. На вкладке «Инфоблок» вы найдете значение ID. Это значение и нужно вставить в код. В нашем случае ID = 13.


ID почтового шаблона, как мы выяснили ранее, равен 78.  

Новый код примет следующий вид:

<? function notifyNewItemFeedback($ID, $arFields){
ob_start();
$res = CIBlockElement::GetList(
array(),
array(
'IBLOCK_ID' => 13,
'PROPERTY_FORUM_TOPIC_ID' => $arFields["TOPIC_ID"]
),
false,
false,
array('*', 'IBLOCK_ID', 'ID', 'NAME', 'PROPERTY_FORUM_TOPIC_ID', 'SECTION_ID', 'SECTION', 'SECTIONS')
);
if($ar_res = $res->GetNext()){
var_dump(date('d.m.Y H:i:s'));
echo 'найден товар '.$ar_res['NAME'];
$TYPE_MAIL_EVENT = 'NEW_ITEM_REVIEW';
var_dump($ar_res);
$arMail = array(
'ITEM_NAME' => $ar_res['NAME'],
'AUTHOR_NAME' => $arFields['AUTHOR_NAME'],
'POST_DATE' => date('d.m.Y H:i:s'),
'POST_MESSAGE' => $arFields['POST_MESSAGE'],
'PATH2ITEM' => $ar_res['DETAIL_PAGE_URL'],
);
var_dump($arMail);
$ID_MAIL_EVENT = 78;
$ok = CEvent::Send($TYPE_MAIL_EVENT, "s1", $arMail, $ID_MAIL_EVENT);
if ($ok){
echo 'Сообщение отправлено';
}
else{
'Сообщение не отправлено '.$ok;
}
}
else
echo 'Элемент не найден.';
$dump = ob_get_clean();
if (!empty($ok)){
return true;
}
else{
$filename = dirname(__FILE__).'/dump.txt';
if (!file_exists($filename)){
$f = fopen($filename, 'w+');
fclose($f);
} file_put_contents($filename, $dump);
}
}
AddEventHandler("forum", "onAfterMessageAdd", "notifyNewItemFeedback"); ?>

Теперь код необходимо скопировать и вставить в файл init.php. Для этого

перейдите в Рабочий стол → Контент → Структура сайта → Файлы и папки → bitrix → php_interface. Найдите файл init.php,нажмите кнопку «гамбургер» рядом с ним и выберите пункт «Редактировать как PHP».



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




Роман Арендарь
31.05.2019 11:16:10
Если включена настройка - запросить "e-mail у гостя",   какой код поля для вывода в почтовом шаблоне?  
Алина Абдулвалеева
05.06.2019 15:12:03
Здравствуйте, Роман!

Спасибо за вопрос. Если активировать настройку "запросить e-mail у гостя", нужно внести изменения в код события. К сожалению, мы не консультируем по вопросам программирования. Можем реализовать эту задачу индивидуально для вашего проекта. Если интересно, пожалуйста, напишите нам на почту:
info@aspro.ru
Родитель
Алексей
19.03.2019 10:49:38
Здравствуйте. Подскажите а для  Аспро NExt  есть решение?
Алина Абдулвалеева
19.03.2019 15:41:49

Здравствуйте, Алексей!

Спасибо за комментарий. Решение, описанное в этой статье, подходит и для Аспро: Next.

Родитель
Александр Слюсаренко
21.02.2019 13:32:09
Все сделал по инструкции. Заработало.
Необходимо в письме получить так же ссылку на товар. НО!
Доступен только
#PATH2ITEM# – относительная ссылка
Пытаюсь ее использовать, но пишет в письме ссылку на несуществующуюю страницу сайта.
Ксения
09.04.2018 13:52:20
Добрый день, написано Файл init.php редактируется только по ftp/
но ниже идут скрины из админки, скажите, можно редактировать файли в админке или нет?
Алексей Ку
19.03.2018 18:15:52
Владимир Мегедин - супер, это то, что было нужно! Спасибо!
Evgeniy Khristin
25.06.2017 10:45:29
При создание файла и добавление скрипта у сайта исчезает доступ к админский панели. И съезжает оформление сайта
Александр Слюсаренко
02.05.2017 20:55:15
В этой папке Рабочий стол → Контент → Структура сайта → Файлы и папки → bitrix → php_interface нет такого файла
Артём
05.09.2016 14:35:38
А если там нет такого файла init.php
Владимир Мегедин
29.06.2017 10:30:17
Создайте его там по FTP.
Родитель