Создание компонента комментариев на 1С-Битрикс

Внимание! Работает режим премодерации. Все сообщения публикуются после проверки!
Страницы: 1
Ответить
RSS
Создание компонента комментариев на 1С-Битрикс
Как создать свой компонент комментариев на 1С-Битрикс: старый и новый подходы (component.php vs class.php)

Платформа 1С-Битрикс предоставляет разработчикам возможности для  создания различных компонентов, которые расширяют функционал сайта.  Ранее для создания компонента использовался файл component.php, однако с появлением нового ядра D7 структура и подходы к разработке компонентов претерпели значительные изменения. Вместо component.php теперь используется class.php,  что позволяет значительно улучшить организацию кода, повысить его  читаемость и использовать объектно-ориентированные принципы разработки.
Реализация компонента для отображения и добавления комментариев через API Битрикс D7.
Код
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();

use Bitrix\Main\Application;
use Bitrix\Main\Loader;
use Bitrix\Iblock\Elements\ElementCommentsTable;

class CustomCommentsComponent extends CBitrixComponent
{
    public function executeComponent()
    {
        try {
            Loader::includeModule('iblock');
            
            $this->processForm();
            $this->getComments();
            $this->includeComponentTemplate();
            
        } catch (Exception $e) {
            ShowError($e->getMessage());
        }
    }

    private function processForm()
    {
        $request = Application::getInstance()->getContext()->getRequest();
        
        if ($request->isPost() && $request->getPost('submit_comment')) {
            $this->addComment($request->getPost('comment_text'));
        }
    }

    private function addComment($text)
    {
        $result = ElementCommentsTable::createObject();
        $result->setName('Комментарий ' . time());
        $result->setPreviewText($text);
        $result->setIblockId($this->arParams['IBLOCK_ID']);
        $result->save();
    }

    private function getComments()
    {
        $comments = ElementCommentsTable::getList([
            'filter' => [
                'IBLOCK_ID' => $this->arParams['IBLOCK_ID'],
                'ACTIVE' => 'Y'
            ],
            'order' => ['ID' => 'DESC']
        ])->fetchAll();

        $this->arResult['COMMENTS'] = $comments;
    }
}
Изменено: Валерий Макеев - 11.09.2025 09:28:41
Страницы: 1
Ответить
Форма ответов
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
 

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Техническая поддержка

выполняется с сайтами на основе любых CMS

от 5 000 рублей
Оптимизация производительности действующих интернет-проектов, наполнение и сопровождение, полная техническая поддержка и продвижение в поисковых сетях.

* стоимость зависит от объема и сложности выполняемых работ, используемой CMS.

Аутсорсинг

готов помочь, если нет времени

договорная

Могу взять на себя работы по full-stack

* на основе готовой верстки

Участие в проекте

привлечение в проект на part-time основе

от 30 000 рублей / неделя

Возможно участие в проекте на ежедневной основе, как разработчика. Занятость - до 20 часов в неделю
Минимальный срок - одна неделя.

* сумма фиксированная