1С-БИТРИКС Комментарии. Как осуществить отправку и вывод комментариев


Если срочно требуется осуществить систему комментирования/отзывов, есть достаточно простой способ.

Записывать комментарии пользователей будем в инфоблок.

У меня на тестовом сайте создан инфоблок, в котором есть 2 раздела, комментарии и отзывы в зависимости от ситуации(страницы), комментарий записывается в один из разделов

Нам потребуется:

  • Форма для отправки комментариев
  • Файл в котором будет записываться комментарий в инфоблок
  • Файл где будут выводиться комментарии.
  • Подключить jQuery
  • js скрипт, который будет отправлять данные

Код под номером PHP #1 записывает комментарии в инфоблок. В моём случае получился инфоблок с ID 4 Вам нужно будет изменить Id

Код PHP #1
[php]
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); // это подключаем если код ниже будет исполняться в отдельном файле php

CModule::IncludeModule('iblock');  // это подключит нужный класс для работы с инфоблоком

$el = new CIBlockElement// обязательно указываем класс
$PROP = array();

$PORP[4] = $_POST['email']; // записываем email в свойство под id 4

$arLoadProductArray = Array( 
"ACTIVE_FROM" => date('d.m.Y H:i:s'), // обязательно нужно указать дату начала активности элемента
"MODIFIED_BY" => $USER->GetID(), // указываем какой пользователь добавил элемент
"IBLOCK_SECTION_ID" => 3// В корне или нет
"IBLOCK_ID" => 4,              //  собственно сам id блока куда будем добавлять новый элемент
"NAME" => $_POST['name'], 
"ACTIVE" => "Y"// активен или  N не активен 
    
"PREVIEW_TEXT" => $_POST['text'], // тест, который будет выводиться
"DETAIL_TEXT" => ""
"PROPERTY_VALUES"=> $PROP,  // Добавим нашему элементу заданные свойства
"DETAIL_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/images.png")  // ссылка на детальную картинку
); 

if(
$newElement $el->Add($arLoadProductArray))  // с помощью Add добавляем новый элемент
echo "ID Нового элемента: ".$newElement
else 
echo 
"Error: ".$el->LAST_ERROR
?>
[/php]

Код PHP #2 будет содержать вывод комментариев его же мы будем подключать с помощью include(); к странице

Код PHP #2
[php]
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");?> 
<?$APPLICATION->IncludeComponent(
    
"bitrix:news"
    
"template1"
    array(
        
"ADD_ELEMENT_CHAIN" => "N",
        
"ADD_SECTIONS_CHAIN" => "Y",
        
"AJAX_MODE" => "Y",
        
"AJAX_OPTION_ADDITIONAL" => "",
        
"AJAX_OPTION_HISTORY" => "N",
        
"AJAX_OPTION_JUMP" => "N",
        
"AJAX_OPTION_STYLE" => "Y",
        
"BROWSER_TITLE" => "-",
        
"CACHE_FILTER" => "N",
        
"CACHE_GROUPS" => "Y",
        
"CACHE_TIME" => "36000000",
        
"CACHE_TYPE" => "A",
        
"CHECK_DATES" => "Y",
        
"DETAIL_ACTIVE_DATE_FORMAT" => "d.m.Y",
        
"DETAIL_DISPLAY_BOTTOM_PAGER" => "Y",
        
"DETAIL_DISPLAY_TOP_PAGER" => "N",
        
"DETAIL_FIELD_CODE" => array(
            
=> "",
            
=> "",
        ),
        
"DETAIL_PAGER_SHOW_ALL" => "Y",
        
"DETAIL_PAGER_TEMPLATE" => "",
        
"DETAIL_PAGER_TITLE" => "Страница",
        
"DETAIL_PROPERTY_CODE" => array(
            
=> "",
            
=> "",
        ),
        
"DETAIL_SET_CANONICAL_URL" => "N",
        
"DISPLAY_BOTTOM_PAGER" => "Y",
        
"DISPLAY_DATE" => "Y",
        
"DISPLAY_NAME" => "Y",
        
"DISPLAY_PICTURE" => "Y",
        
"DISPLAY_PREVIEW_TEXT" => "Y",
        
"DISPLAY_TOP_PAGER" => "N",
        
"HIDE_LINK_WHEN_NO_DETAIL" => "N",
        
"IBLOCK_ID" => "4",
        
"IBLOCK_TYPE" => "comments",
        
"INCLUDE_IBLOCK_INTO_CHAIN" => "Y",
        
"LIST_ACTIVE_DATE_FORMAT" => "d.m.Y",
        
"LIST_FIELD_CODE" => array(
            
=> "",
            
=> "",
        ),
        
"LIST_PROPERTY_CODE" => array(
            
=> "",
            
=> "",
        ),
        
"MESSAGE_404" => "",
        
"META_DESCRIPTION" => "-",
        
"META_KEYWORDS" => "-",
        
"NEWS_COUNT" => "20",
        
"PAGER_BASE_LINK_ENABLE" => "N",
        
"PAGER_DESC_NUMBERING" => "N",
        
"PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
        
"PAGER_SHOW_ALL" => "N",
        
"PAGER_SHOW_ALWAYS" => "N",
        
"PAGER_TEMPLATE" => ".default",
        
"PAGER_TITLE" => "Новости",
        
"PREVIEW_TRUNCATE_LEN" => "",
        
"SEF_MODE" => "Y",
        
"SET_LAST_MODIFIED" => "N",
        
"SET_STATUS_404" => "N",
        
"SET_TITLE" => "Y",
        
"SHOW_404" => "N",
        
"SORT_BY1" => "ACTIVE_FROM",
        
"SORT_BY2" => "SORT",
        
"SORT_ORDER1" => "DESC",
        
"SORT_ORDER2" => "ASC",
        
"STRICT_SECTION_CHECK" => "N",
        
"USE_CATEGORIES" => "N",
        
"USE_FILTER" => "N",
        
"USE_PERMISSIONS" => "N",
        
"USE_RATING" => "N",
        
"USE_RSS" => "N",
        
"USE_SEARCH" => "N",
        
"USE_SHARE" => "N",
        
"COMPONENT_TEMPLATE" => "template1",
        
"SEF_FOLDER" => "/otzyvy/",
        
"SEF_URL_TEMPLATES" => array(
            
"news" => "",
            
"section" => "",
            
"detail" => "#ELEMENT_ID#/",
        )
    ),
    
false
);?>
[/php]

Код js #1 содержит скрипт для отправки текста, имени и email для записи в инфоблок. Ваша форма должна содержать такие поля с классами text, name, email, кнопка отправки должна иметь класс t-btns. На странице должен быть контейнер(div) с классом listOtsiv, здесь будут отображаться комментарии после обновления страницы.

Код Js #1
[js] 
$(document).on('click', '.t-btns',function(e){
var post = 0;
var text = $('.text').val();
var name = $('.name').val();
var email = $('.email').val();

    $.ajax({  
type: "POST",  
url: "local/templates/.default/include/otsivAdd.php",  
data: {
text:text,
name:name, 
email:email
},  
success: function(r){
$('.text, .name, .email').val('');

    $.ajax({  
type: "GET",  
url: "local/templates/.default/include/otsivResult.php",  
data: {
post:post
},  
success: function(rList){
$('.listOtsiv').html(rList);
    } });
} });

})
  [/js]

Код PHP #3 должен находиться на странице вывода комментариев в контейнере с классом listOtsiv. Здесь подключается компонент новостей из PHP кода #3

Код PHP #3
[php]
<?include('local/templates/.default/include/otsivResult.php')?>
[/php]

Если будут вопросы их можно задать в комментариях. Статья пока не полностью готова, но здесь освещены пока общие моменты. Спасибо за понимание!

Отправьте Email или номер телефона