Сразу важное уточнение: я не программист. Совсем.
Я системный администратор. Уже в далёком прошлом. Когда-то я ставил сервера, сети, домены, умел разбираться в чужих конфигурациях, искать, где именно что-то перестало работать. Но самостоятельно читать PHP-код, находить в нём причину ошибки и предлагать исправление я не умею.
Именно поэтому история с JComments для Joomla 6 получилась для меня интересной.
Мне понадобились комментарии на сайте. Для Joomla есть известный компонент JComments. Разработчик exstreme уже выпустил бета-версию с адаптацией к Joomla 6. Я поставил её на локальный сайт и начал проверять обычные вещи: отправляются ли комментарии, работает ли модерация.
Среда была такой:
- Joomla 6.1.2;
- PHP 8.4;
- MySQL 8.0;
- Open Server Panel 6.5.1.
И почти сразу выяснилось, что базовые сценарии ломаются.
Что делал я, а что — ИИ
Моя часть работы была не в написании кода.
Я воспроизводил ошибки на реальном сайте, описывал симптомы, показывал сообщения Joomla, проверял предлагаемые изменения и сообщал, что именно изменилось после очередной правки. Без такого тестирования теория остаётся теорией: можно написать красивое объяснение, но не заметить, что следующая кнопка всё ещё падает.
Сначала мне помогала DeepSeek. Она разбирала первые ошибки, искала причины в коде и предлагала исправления. Вместе мы нашли три проблемы, блокировавшие нормальную работу компонента.
Позже DeepSeek упёрлась в свой потолок: не смогла довести до результата упаковку собственного установщика и задачу с интеграцией комментариев в динамический контент сайта. Тогда я продолжил работу с ChatGPT. (Благо, мне удалось приобрести подписку). Она помогла проверить структуру пакета, аккуратно собрать рабочий установщик, оформить метаданные, опубликовать временный релиз и разобраться с частью интеграционных проблем.
То есть нет, я не буду рассказывать, будто сам написал патчи. Я их не написал. Но я поставил задачу, предоставил реальную среду, последовательно проверял решения и не бросил всё после десятой неудачной попытки.
Ошибка при сохранении статьи
При попытке сохранить любую статью Joomla сообщала:
Unknown column access in field list
Причина оказалась в плагине Smart Search для JComments. Он пытался работать с полем access в таблице комментариев. Такого поля там нет: оно относится к объектам комментариев, а не к самим комментариям.
Для исправления в плагине были переопределены четыре обработчика доступа, которые в этой ситуации работать не должны.
После этого статьи снова начали сохраняться.
Ошибка ContentHelper после сохранения
Сразу после первой правки проявилась следующая проблема:
Class Joomla\Component\Jcomments\Site\Helper\ContentHelper not found
Тот же плагин Smart Search вызывал класс, которого в текущей бета-версии нет.
Пока полноценная реализация этого класса не появится в официальном проекте, обработка после сохранения отключена. На публикацию и отображение комментариев это не влияет. Временно отключается только автоматическая индексация комментариев для Smart Search.
Ошибка при публикации комментария
Комментарий успешно отправлялся и появлялся в списке модерации. Но при нажатии «Опубликовать» Joomla отвечала:
MVC Factory not set in Joomla\CMS\MVC\Model\BaseDatabaseModel
Причина была в устаревшем способе получения таблицы комментариев в административной модели. Для Joomla 6 он требовал фабрику MVC, которой компонент в этой точке не получал.
Исправление свелось к использованию стандартного механизма Joomla для получения таблицы комментариев. После этого комментарии начали нормально проходить весь путь: отправка, модерация, публикация, отображение на сайте.
Временная сборка
Пока официальные исправления не появились, я опубликовал временную неофициальную patch-сборку:
JComments 5.0.0 — BSL Joomla 6 Patch Build
Это не новый компонент и не попытка сделать «свой JComments». Исходный проект, первоначальная адаптация к Joomla 6 и основная работа принадлежат текущему разработчику JComments — exstreme.
В установщик вошли проверенные исправления. Сервер автоматических обновлений намеренно отключён: я не хочу, чтобы Joomla незаметно заменила исправленные файлы на другую версию компонента.
Сборка имеет статус предварительного релиза. Когда официальная версия JComments устранит эти проблемы, временный релиз будет заархивирован, а использовать следует официальный пакет.
Зачем я вообще об этом пишу
Не для того, чтобы изобразить себя разработчиком.
Скорее наоборот: я хочу зафиксировать любопытный факт. Человек, который не умеет программировать, всё равно может участвовать в технической работе осмысленно. Он может заметить проблему, не отмахнуться от неё, точно описать условия, воспроизвести ошибку, проверить исправление и довести результат до реального сайта.
А ИИ в такой работе может быть не волшебной кнопкой, а очень сильным инструментом. DeepSeek помог мне с первоначальным анализом трёх ошибок. ChatGPT помог продолжить работу там, где предыдущий инструмент уже не справлялся: с установщиком, проверкой сборки и публикацией.
Каждый делал свою часть. И в итоге комментарии на сайте заработали.