Отзывы Jquery Ajax на основе инфоблоков 1С-Битрикс



Создаем в корне сайта папку ajax и в нем создаем файл revews.php, таким содержанием, здесь логика добавления отзыва в инфоблок, при этом используем API Biitrix








CModule::IncludeModule('iblock');
$el = new CIBlockElement;

$arFilds = Array(
"IBLOCK_ID" => 11,
"ACTIVE_FROM" => date('d.m.Y'),
"NAME" => strip_tags($_POST['NAME']),
"ACTIVE" => "Y",
"PREVIEW_TEXT" => strip_tags($_POST['TEXT'])
);

if($addID = $el->Add($arFilds))
echo $result['status']='

Ваш отзыв успешно добавлен

';
else
echo $result['status'] = $el->LAST_ERROR;

?>



в корне сайта создаем папку js, в ней создаем файл main.js, вот таким содержанием и подключаем в нашем шаблоне сайта /bitrix/templates/ваш шаблон/header.php main,js




$('#review-form').submit(function(e){
var errors='';
if ($('#review-form .name').val()<4) {
$('#review-form .name').addClass('red-border');
errors = 'errors';
return false;
}else{
$('#review-form .name').removeClass('red-border');
}

if ($('#review-form .text').val()<10) {
$('#review-form .text').addClass('red-border');
errors = 'errors';
return false;
}else{
$('#review-form .text').removeClass('red-border');
}

if (!errors) {
$.ajax({
type: 'POST',
url: '/ajax/reviews.php',
//dataType: 'json',
data: $(this).serialize(),
success: function(result){
$('#review-form').html(result);
}
});
}
e.preventDefault();
return false;
});


Форма в разметке bootstrap для стилизации формы подключаем bootstart.css или стили для формы















Подключаем компонент news,list (список новостей) такими параметрами




IncludeComponent("bitrix:news.list", "reviews", Array(
"COMPONENT_TEMPLATE" => ".default",
"IBLOCK_TYPE" => "content", // Тип информационного блока (используется только для проверки)
"IBLOCK_ID" => "11", // Код информационного блока
"NEWS_COUNT" => "20", // Количество новостей на странице
"SORT_BY1" => "ACTIVE_FROM", // Поле для первой сортировки новостей
"SORT_ORDER1" => "DESC", // Направление для первой сортировки новостей
"SORT_BY2" => "SORT", // Поле для второй сортировки новостей
"SORT_ORDER2" => "ASC", // Направление для второй сортировки новостей
"CHECK_DATES" => "Y", // Показывать только активные на данный момент элементы
"DETAIL_URL" => "", // URL страницы детального просмотра (по умолчанию - из настроек инфоблока)
"AJAX_MODE" => "N", // Включить режим AJAX
"AJAX_OPTION_JUMP" => "N", // Включить прокрутку к началу компонента
"AJAX_OPTION_STYLE" => "N", // Включить подгрузку стилей
"AJAX_OPTION_HISTORY" => "N", // Включить эмуляцию навигации браузера
"AJAX_OPTION_ADDITIONAL" => "", // Дополнительный идентификатор
"CACHE_TYPE" => "A", // Тип кеширования
"CACHE_TIME" => "36000000", // Время кеширования (сек.)
"CACHE_FILTER" => "N", // Кешировать при установленном фильтре
"CACHE_GROUPS" => "N", // Учитывать права доступа
"PREVIEW_TRUNCATE_LEN" => "", // Максимальная длина анонса для вывода (только для типа текст)
"ACTIVE_DATE_FORMAT" => "d.m.Y", // Формат показа даты
"SET_TITLE" => "Y", // Устанавливать заголовок страницы
"SET_BROWSER_TITLE" => "Y", // Устанавливать заголовок окна браузера
"SET_META_KEYWORDS" => "Y", // Устанавливать ключевые слова страницы
"SET_META_DESCRIPTION" => "Y", // Устанавливать описание страницы
"SET_STATUS_404" => "Y", // Устанавливать статус 404
"INCLUDE_IBLOCK_INTO_CHAIN" => "N", // Включать инфоблок в цепочку навигации
"ADD_SECTIONS_CHAIN" => "Y", // Включать раздел в цепочку навигации
"HIDE_LINK_WHEN_NO_DETAIL" => "N", // Скрывать ссылку, если нет детального описания
"PARENT_SECTION" => "", // ID раздела
"PARENT_SECTION_CODE" => "", // Код раздела
"INCLUDE_SUBSECTIONS" => "Y", // Показывать элементы подразделов раздела
"PAGER_TEMPLATE" => ".default", // Шаблон постраничной навигации
"DISPLAY_TOP_PAGER" => "N", // Выводить над списком
"DISPLAY_BOTTOM_PAGER" => "Y", // Выводить под списком
"PAGER_TITLE" => "Новости", // Название категорий
"PAGER_SHOW_ALWAYS" => "N", // Выводить всегда
"PAGER_DESC_NUMBERING" => "N", // Использовать обратную навигацию
"PAGER_DESC_NUMBERING_CACHE_TIME" => "36000", // Время кеширования страниц для обратной навигации
"PAGER_SHOW_ALL" => "N", // Показывать ссылку "Все"
"DISPLAY_DATE" => "Y", // Выводить дату элемента
"DISPLAY_NAME" => "Y", // Выводить название элемента
"DISPLAY_PICTURE" => "Y", // Выводить изображение для анонса
"DISPLAY_PREVIEW_TEXT" => "Y", // Выводить текст анонса
),
false
);?>