После обновления ядра 1С-Битрикс до версии 25.500.0 на многих сайтах возникает критическая ошибка, связанная с модулем Aspro Smartseo. Сайт перестает работать, и в админке появляется следующее сообщение:
Fatal error: Declaration of Aspro\Smartseo\Models\SmartseoFilterRuleTable::getRowById($id) must be compatible with Bitrix\Main\ORM\Data\DataManager::getRowById($id, array $parameters = []) in /bitrix/modules/aspro.smartseo/lib/models/smartseofilterrule.php on line 221
При выполнении скрипта возникла ошибка.
Причина ошибки
В новой версии Битрикс изменилась сигнатура (объявление) метода getRowById() в родительском классе Bitrix\Main\ORM\Data\DataManager. Теперь он требует второй необязательный параметр array $parameters = [].
Модуль Aspro Smartseo использует свои классы, которые наследуются от этого родительского класса, но в них метод getRowById() объявлен только с одним параметром ($id), что приводит к конфликту и фатальной ошибке.
Решение: редактирование файлов модуля
Чтобы исправить ошибку, необходимо обновить объявление метода getRowById() в нескольких файлах модуля Smartseo, добавив недостающий параметр.
Пошаговая инструкция:
- Откройте файловый менеджер вашего хостинга (например, через панель управления) или подключитесь по FTP/SFTP.
- Перейдите в папку с файлами модуля:
/bitrix/modules/aspro.smartseo/lib/models/
- Отредактируйте следующие 5 файлов, находя в каждом из них строку с объявлением метода и добавляя второй параметр:
smartseofilterrule.php
smartseofiltertag.php
smartseonoindexconditiontable.php
smartseonoindexruletable.php
smartseoseotexttable.php
Что именно нужно изменить в каждом файле?
В каждом из указанных файлов найдите строку, которая выглядит так:
public static function getRowById($id)
И замените её на следующую:
public static function getRowById($id, array $parameters = [])
Пример исправления для файла smartseofilterrule.php
- Откройте файл
smartseofilterrule.php.
- Найдите строку 221 (или около того) с кодом:
public static function getRowById($id)
- Измените её на:
public static function getRowById($id, array $parameters = [])
- Сохраните изменения.
Повторите эти действия для всех 5 файлов из списка.
Что делать после исправления?
- После редактирования всех файлов обновите страницу вашего сайта. Ошибка должна исчезнуть, и сайт снова станет доступен.
- Рекомендуется очистить кеш Битрикс (Администрирование > Настройки > Настройки продукта > Производительность > Очистить кеш).
- Также стоит проверить, доступны ли обновления для самого модуля Aspro Smartseo в Маркетплейсе. Разработчики могли уже выпустить официальный патч.
Важное предупреждение
Перед редактированием файлов обязательно создайте резервную копию папки /bitrix/modules/aspro.smartseo/ или всего сайта. Это позволит откатить изменения в случае ошибки.
Заключение
Описанная ошибка — частый случай несовместимости пользовательских модулей с новыми версиями ядра Битрикс. После выполнения этих шагов работа сайта должна восстановиться. Если ошибка persists (сохраняется) или возникают другие проблемы, обратитесь в техническую поддержку хостинга или к разработчикам модуля Aspro Smartseo.
После обновления ядра 1С-Битрикс до версии 25.500.0 на многих сайтах возникает критическая ошибка, связанная с модулем Aspro Smartseo. Сайт перестает работать, и в админке появляется следующее сообщение:
Причина ошибки
В новой версии Битрикс изменилась сигнатура (объявление) метода
getRowById()в родительском классеBitrix\Main\ORM\Data\DataManager. Теперь он требует второй необязательный параметрarray $parameters = [].Модуль Aspro Smartseo использует свои классы, которые наследуются от этого родительского класса, но в них метод
getRowById()объявлен только с одним параметром ($id), что приводит к конфликту и фатальной ошибке.Решение: редактирование файлов модуля
Чтобы исправить ошибку, необходимо обновить объявление метода
getRowById()в нескольких файлах модуля Smartseo, добавив недостающий параметр.Пошаговая инструкция:
/bitrix/modules/aspro.smartseo/lib/models/smartseofilterrule.phpsmartseofiltertag.phpsmartseonoindexconditiontable.phpsmartseonoindexruletable.phpsmartseoseotexttable.phpЧто именно нужно изменить в каждом файле?
В каждом из указанных файлов найдите строку, которая выглядит так:
И замените её на следующую:
Пример исправления для файла smartseofilterrule.php
smartseofilterrule.php.public static function getRowById($id)public static function getRowById($id, array $parameters = [])Повторите эти действия для всех 5 файлов из списка.
Что делать после исправления?
Важное предупреждение
Перед редактированием файлов обязательно создайте резервную копию папки
/bitrix/modules/aspro.smartseo/или всего сайта. Это позволит откатить изменения в случае ошибки.Заключение
Описанная ошибка — частый случай несовместимости пользовательских модулей с новыми версиями ядра Битрикс. После выполнения этих шагов работа сайта должна восстановиться. Если ошибка persists (сохраняется) или возникают другие проблемы, обратитесь в техническую поддержку хостинга или к разработчикам модуля Aspro Smartseo.