Проблема: После перехода на актуальную версию платформы 1С-Битрикс владельцы сайтов, использующие решение от АСПРО, начали сталкиваться с критическим прерыванием работы (Fatal error). Ошибка в журнале выглядит следующим образом:
Fatal error: Declaration of Aspro\Smartseo\Models\SmartseoFilterRuleTable::getRowById($id) must be compatible with Bitrix\Main\ORM\Data\DataManager::getRowById($id, array $parameters = []) in .../smartseofilterrule.php
Корень проблемы: Последние обновления ядра Битрикс внесли изменения в базовый класс Bitrix\Main\ORM\Data\DataManager, а именно — добавили второй необязательный параметр $parameters в метод getRowById(). Модуль АСПРО SmartSEO, в свою очередь, содержит собственные классы-наследники, которые переопределяют этот метод, но без учета нового формата. Это вызывает конфликт объявлений (declaration mismatch) и «падение» сайта.
Пошаговое решение для исправления ошибки
Если у вас нет действующего договора на техническую поддержку модулей АСПРО или вы не можете немедленно установить официальное обновление, данная проблема решается самостоятельным редактированием нескольких файлов.
Важно: Перед любыми изменениями создайте полную резервную копию сайта и базы данных!
-
Через FTP-клиент или файловый менеджер хостинга найдите файл, указанный в тексте ошибки (например,
/bitrix/modules/aspro.smartseo/lib/models/smartseofilterrule.php). -
Откройте файл для редактирования в текстовом редакторе, поддерживающем код (например, Notepad++, VS Code).
-
Найдите в коде строку с объявлением проблемной функции. Она будет выглядеть так:
public static function getRowById($id)
-
Измените сигнатуру этой функции, добавив второй параметр в соответствии с новыми требованиями ядра Битрикс:
public static function getRowById($id, array $parameters = [])
Обратите внимание: Параметр
$parametersдолжен быть массивом (array) и иметь значение по умолчанию — пустой массив (= []). -
Сохраните изменения и закройте файл.
-
Проверьте работу сайта. Ошибка должна исчезнуть.
Список файлов для проверки и правки
Ошибка может проявляться не в одном, а в нескольких классах модуля. Во избежание повторных сбоев рекомендуется сразу проверить и исправить следующие файлы в директории /bitrix/modules/aspro.smartseo/lib/models/:
-
smartseofilterrule.php -
smartseofiltertag.php -
smartseonoindexconditiontable.php -
smartseonoindexruletable.php -
smartseoseotexttable.php
В каждом из этих файлов найдите и измените метод getRowById по описанному выше шаблону.
Рекомендации после исправления
-
Тщательно протестируйте функционал SEO-фильтра: откройте разделы каталога, примените фильтры, проверьте формирование ЧПУ-адресов и мета-тегов (title, description).
-
Помните, что это временное решение. Компания АСПРО уже выпустила официальное обновление для своего модуля, которое полностью совместимо с новой версией Битрикс.
Для стабильной и безопасной работы рекомендуем продлить лицензию и установить новую версию решения Аспро.
Приобрести продление для лицензии Битрикс и решения от Аспро можно у нас.
Данное руководство поможет вам быстро восстановить работоспособность интернет-магазина после обновления системы и избежать потери трафика из-за критических ошибок.
