Aspro

Исправление ошибки Aspro Smartseo после обновления Битрикс до 25.500.0

Исправление фатальной ошибки Declaration of Aspro\Smartseo\Models\ после обновления Битрикс 25.500.0. Пошаговое руководство по редактированию файлов модуля Smartseo для восстановления работы сайта

sqlka.ruОпубликовано: Чтение: 3 мин.
Исправление ошибки Aspro Smartseo после обновления Битрикс до 25.500.0

После обновления ядра 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, добавив недостающий параметр.

Пошаговая инструкция:

  1. Откройте файловый менеджер вашего хостинга (например, через панель управления) или подключитесь по FTP/SFTP.
  2. Перейдите в папку с файлами модуля: /bitrix/modules/aspro.smartseo/lib/models/
  3. Отредактируйте следующие 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

  1. Откройте файл smartseofilterrule.php.
  2. Найдите строку 221 (или около того) с кодом: public static function getRowById($id)
  3. Измените её на: public static function getRowById($id, array $parameters = [])
  4. Сохраните изменения.

Повторите эти действия для всех 5 файлов из списка.

Что делать после исправления?

  1. После редактирования всех файлов обновите страницу вашего сайта. Ошибка должна исчезнуть, и сайт снова станет доступен.
  2. Рекомендуется очистить кеш Битрикс (Администрирование > Настройки > Настройки продукта > Производительность > Очистить кеш).
  3. Также стоит проверить, доступны ли обновления для самого модуля Aspro Smartseo в Маркетплейсе. Разработчики могли уже выпустить официальный патч.

Важное предупреждение

Перед редактированием файлов обязательно создайте резервную копию папки /bitrix/modules/aspro.smartseo/ или всего сайта. Это позволит откатить изменения в случае ошибки.

Заключение

Описанная ошибка — частый случай несовместимости пользовательских модулей с новыми версиями ядра Битрикс. После выполнения этих шагов работа сайта должна восстановиться. Если ошибка persists (сохраняется) или возникают другие проблемы, обратитесь в техническую поддержку хостинга или к разработчикам модуля Aspro Smartseo.

Хотите освоить SQL для работы с данными?

В SQLka можно изучать SQL последовательно или готовиться к собеседованиям. Запросы выполняются прямо в браузере — устанавливать базу данных не нужно.

sqlka.ru

support@sqlka.ru

Дальше по теме

← Все статьи