Если срочно требуется осуществить систему комментирования/отзывов, есть достаточно простой способ.
Записывать комментарии пользователей будем в инфоблок.
У меня на тестовом сайте создан инфоблок, в котором есть 2 раздела, комментарии и отзывы в зависимости от ситуации(страницы), комментарий записывается в один из разделов
Нам потребуется:
- Форма для отправки комментариев
- Файл в котором будет записываться комментарий в инфоблок
- Файл где будут выводиться комментарии.
- Подключить jQuery
- js скрипт, который будет отправлять данные
Код под номером PHP #1 записывает комментарии в инфоблок. В моём случае получился инфоблок с ID 4 Вам нужно будет изменить Id
Код PHP #1
<?
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 #2 будет содержать вывод комментариев его же мы будем подключать с помощью include(); к странице
Код PHP #2
<?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(
0 => "",
1 => "",
),
"DETAIL_PAGER_SHOW_ALL" => "Y",
"DETAIL_PAGER_TEMPLATE" => "",
"DETAIL_PAGER_TITLE" => "Страница",
"DETAIL_PROPERTY_CODE" => array(
0 => "",
1 => "",
),
"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(
0 => "",
1 => "",
),
"LIST_PROPERTY_CODE" => array(
0 => "",
1 => "",
),
"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
);?>
Код js #1 содержит скрипт для отправки текста, имени и email для записи в инфоблок. Ваша форма должна содержать такие поля с классами text, name, email, кнопка отправки должна иметь класс t-btns. На странице должен быть контейнер(div) с классом listOtsiv, здесь будут отображаться комментарии после обновления страницы.
Код Js #1
$(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);
} });
} });
})
Код PHP #3 должен находиться на странице вывода комментариев в контейнере с классом listOtsiv. Здесь подключается компонент новостей из PHP кода #3
Код PHP #3
<?include('local/templates/.default/include/otsivResult.php')?>
Если будут вопросы их можно задать в комментариях. Статья пока не полностью готова, но здесь освещены пока общие моменты. Спасибо за понимание!
Комментарии (44)