[spoiler]
Хочу сделать форму отправки сообщения на email (или попросту "обратная связь". Я буду использовать компонент добавления элемента инфоблока: минимум программирования, а все записи остаются в базе данных сайта, в любой момент можно к ним вернуться.
Сначала надо создать инфоблок, куда будут попадать отзывы, создам свойства "Город" и "email", в действительности их может быть больше.
Для всех пользователей даю права на изменения.
Затем создаю новую страницу на сайте и помещаю на неё компонент "форма добавления элементов". В настройках указываю необходимые поля, я сделал переименование стандартных полей:
название - имя
описание для анонса - текст
Получилась такая аккуратная форма:
Она уже будет работать и записи можно просмотреть из админки:
Теперь осталось сделать так, чтобы при добавлении записи отправлялось письмо ответственному человеку.
Для этого я создам новый тип почтового события FEEDBACK (Настройки - Настройки продукта - Почтовые события - Типы почтовых событий). И создам почтовый шаблон для этого события
Форма обратной связи на сайте #TEXT# Подробности: |
В поле "кому" ставлю свой email.
Чтобы инициировать отправку события можно использовать событие
Оно возникает после добавления элемента инфоблока.
Мой инфоблок имеет ID=20, поэтому в bitrix/php_interface/init.php вставлю обработчик, который будет проверять чтобы был изменён мой инфоблок и отправлять письмо.
Для отправки использую системный метод
Взял за основу код из документации, получилось вот что:
// регистрируем обработчик AddEventHandler("iblock", "OnAfterIBlockElementAdd", Array("MyClass", "OnAfterIBlockElementAddHandler")); class MyClass { // создаем обработчик события "OnAfterIBlockElementAdd" function OnAfterIBlockElementAddHandler(&$arFields) { if ($arFields["IBLOCK_ID"] == 20) { $arSend = array('TEXT' => $arFields['NAME'].' написал: '.$arFields['PREVIEW_TEXT']); CEvent::Send('FEEDBACK',SITE_ID,$arSend); } } } |
Обработчик вместо макроса #TEXT# подставит имя и текст, который заполнил пользователь. Это простейший вариант, на его основе можно сделать более сложные решения.
Чтобы добавить поля - не нужны навыки программирования, достаточно создать новые свойства инфоблока и указать их в настройках компонента.
Дополнено 19.06.2009 г. Чтобы включить защиту от автоматического заполнения включите в настройках компонента параметр
Использовать CAPTCHA |
Позднее опубликовал развитие этой идеи "
Фото:
не нашел init.php в указанной папке..
в данном случае мои свойства: ADRESS, TEL, MAIL
Как быть в таком случае? Чтобы можно было отправить письмо со значениями свойств, но при этом добавляемый элемент инфоблока оставался не активным.
Она должна там быть как компонент по умолчанию от разработчика системы…!!!
Нет ограничений ни по количеству полей, ни по количеству сообщений посланых через форму. Всего за 600 руб/год.
Помимо тектового поля и многострочного текстового поля, можно создавать списки, переключатели, флажки.
Там, обратная связь с вашими посетителями может быть разбита по темам, каждая из которых направляет сообщения своему адресату. Например, в отдел продаж, в отдел закупки, в кадровый отдел, в отдел разработки сайта.
Также, позволяет создавать поля в форме обратной связи обязательные для заполнения.
За минусом можно считать только отсутстве каптчи, если, конечно, считать это минусом.
Кстати, на одном из поддерживаемых мною сайтов с аудиторией 200-400 посетителей в день,
уже 7 лет стоит форма без каптчи, правда, не от вышеуказанного сервиса. Так писем со спамом за этот период пришло ну может 50, не более. Так что каптча не всегда нужна, чаще это просто лишнее поле, которое заставляют заполнять.
Оказывается, есть такая опция в стандартном компоненте.
Здесь и привязка к инфоблоку не теряется.
А одного сайта, наверно, проще сделать обработчик. По крайней мере, это несложно сделать по инструкции.
Я имею ввиду при пересылке с помощью "CEvent::Send" на почту, чтобы там информацию, по всем заполненным полям можно было посмотреть.
заранее спасибо
А доработать уже дело каждого.
Сразу видно как очень удобно работать с почтой в Битрикс.
Вопрос решен:
Модуль конечно платный, но цена не думаю что высока, а функционала в нем предостаточно для того, чтобы сэкономить массу времени и нервов.
Если подставить
#TEXT#
Подробности: