Warning: Illegal string offset ‘active’ — как побороть?

Многие владельцы сайта, созданного на основе бесплатной CMS Joomla наверняка сталкивались с проблемой, когда в шаблоне вывода материалов возле блока постраничной навигации появляется сообщение с загадочным предупреждением:

Warning: Illegal string offset ‘active’ in /расположение/сайта/на/сервере/ваш_домен.ru/htdocs/www/templates/ваш_шаблон/html/pagination.php on line 42

Причина ошибки

Без особых раздумий лезем в указанный каталог на сервере и находим файл pagination.php. Открываем и видим, что указанные предупреждения касаются функции вывода блока постраничной навигации, а номера строк кода указывают нам на участки кода, генерирующие предупреждение:

if($page['data']['active']) {
    $html .= '<strong>';
    // или $html .= '</strong>';
}

Предупреждение генерируется на странице несколько раз, потому что только одному элементу массива присвоена метка «active». Это активная страница навигации. Для остальных элементов ключ «active» в массиве попросту отсутствует. Из чего делаем вывод, что данную проблему не нужно исправлять с помощью PHP кода, так как наличие данного ключа массива уже проверяется в условии.

Простое решение

Разрешить проблему и избавиться от подобных предупреждений нам поможет один из пунктов настройки CMS Joomla. Расскажу на примере Joomla 3.x. Переходим в Админ-панель. Далее Система -> Общие настройки. В открывшемся окне переходим на вкладку «Сервер» и ищем опцию «Сообщения об ошибках».  В выпадающем списке выбираем «Нет» и сохраняем изменения. При необходимости можно снова включить сообщения об ошибках для отладки кода.

Сообщения об ошибках - Joomla 3

Заключение

Уверен, что с подобными предупреждениями администраторы сайта под управлением CMS Joomla сталкиваются достаточно часто. Поэтому, если не удается решить проблему на уровне исходного кода, — смело выключайте сообщения об ошибках. Как обычно, надеемся на лайки, ждем новых подписчиков на наш паблик ВКонтакте и новые комментарии.

Понравилась запись? Ставь лайк!
Loading more content...