Здравствуйте! Хочу организовать на основе инфоблоков и веб-форм систему отзывов об организациях представленных на сайте. Для этого создал первым делом инфобок "организации", список и детальный просмотр организаций выполнен на основе компонента news.list и news.detail. Затем создал ещё один инфоблок "Отзывы" в котором создал поле "Привязка к элементу" для связи отзывов и организаций. Далее создал веб-форму с двумя полями "Имя" и "Отзыв" и кнопкой "Добавить". Далее в файле /bitrix/php_interface/init.php создал событие для обработки этой формы:
Код
//События для формфы отзывы организации
AddEventHandler('form', 'onBeforeResultAdd', 'my_onBeforeResultAdd');
function my_onBeforeResultAdd($WEB_FORM_ID, $arFields, $arrVALUES)
{
global $APPLICATION;
// действие обработчика распространяется только на форму с ID=3
if($WEB_FORM_ID==3) {
$el = new CIBlockElement;
$datetime = date("d.m.Y H:i:s");
$PROP = array();
$PROP['ORGANIZATION'] = $_POST["ORGANIZATION_ID"]; // ID организации про которую пишут отзыв
$PROP['USER_RW'] = $_POST["USER_RV_ID"]; // ID пользователя который пишет отзыв
//Если отзывы больше 499 символом он не публикуется, а отправляется на проверку модератору сайта
if(count($_POST["form_textarea_30"])>499) {$active = "N";} else {$active="Y";}
$arLoadProductArray = Array(
"MODIFIED_BY" => $_POST["USER_RV_ID"], // элемент изменен текущим пользователем
"IBLOCK_SECTION_ID" => false, // элемент лежит в корне раздела
"IBLOCK_ID" => 37, //Инфоблок "Отзывы организации"
"PROPERTY_VALUES"=> $PROP,
"NAME" => "Отзыв от ".$_POST['form_text_29']." (".$datetime.")",
"ACTIVE" => $active, // активен
"PREVIEW_TEXT" => $_POST["form_textarea_30"],
"DETAIL_TEXT" => $_POST["form_textarea_30"]
);
if($REVIEW_ID = $el->Add($arLoadProductArray))
echo $satus = "New ID: ".$REVIEW_ID;
else
echo $satus = "Error: ".$el->LAST_ERROR;
$massege = '
<div>WebForm ID: '.$WEB_FORM_ID.'</div>
<div>Name: '.$_POST["form_text_29"].'</div>
<div>Review: '.$_POST["form_textarea_30"].'</div>
<div>ID org.:'.$_POST["ORGANIZATION_ID"].'</div>
<div>ID user.:'.$_POST["USER_RV_ID"].'</div>
<div>Status: '.$satus.' </div>
';
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: www.site.ru <robot@site.ru>' . "\r\n";
mail("myemail@yandex.ru","test review form" ,$massege,$headers);
}
}
А ещё что это такое появляется после отправки данных с формы http://myscreenshot.info/i/0002/721971366885895391301386454032.png ? А если с той же формы отправить данные не авторизованному пользователю, то похоже какая-то ошибка происходит, потому как футер не грузится. (((
Неужели нет светлых мыслей? ))) Я всё больше склоняюсь к созданию в структуре сайта файла ajax.php с включенным прологом и эпилогом, создать свою форму (HTML + PHP + JS + JQUERY) и выполнить всё задуманное через этот файлик. )))