Старая Joomla и новый PHP

Некоторые сайты до сих пор используют древние версии движка Joomla. Я не особо люблю эту CMS из-за сложного меню, но периодически сталкиваюсь с ней из-за своей работы. Почему-то многие бюджетные организации используют именно Джумлу, причём очень-очень старых версий…

Обновиться до новых версий получается далеко не всегда, так как шаблоны используют устаревшие функции движка. И переучить персонал крайне сложно.

Включение отображения ошибок в JoomlaА вот администраторы хостинга, на котором стоит сайт, может внезапно обновить версию PHP. На многих форумах советуют откатиться до старой версии PHP. Но зачем? Обычно можно исправить небольшими изменениями кода.

Первым делом советую включить вывод ошибок в настройках Джумлы (Администрирование — Общие настройки — вкладка Сервер — Сообщения об ошибках: Простой/Максимальный).

Типичные ошибки:

Deprecated: Function split() is deprecated in /home/www/%site_name%/htdocs/templates/%template_name%/index.php on line 4

Решение: вместо split() пишем explode().

Warning: Parameter 1 to modMainMenuHelper::buildXML() expected to be a reference, value given in /home/www/%site_name%/htdocs/libraries/joomla/cache/handler/callback.php on line 99

Решение:

в файле modules/mod_mainmenu/helper.php
Меняем это:
function buildXML(&$params)
на это:
function buildXML($params)

Deprecated: Assigning the return value of new by reference is deprecated in /home/www/%site_name%/htdocs/plugins/content/plugin_jw_sigpro.php on line 45

Решение:

в этом файле убираем «&»
// Parameters
$param =& new mosParameters( $mambot->params );

Warning: Parameter 4 to JHTMLMenu::treerecurse() expected to be a reference, value given in /home/www/%site_name%/htdocs/libraries/joomla/html/html.php on line 87
Warning: array_slice() expects parameter 1 to be array, null given in /home/www/%site_name%/htdocs/administrator/components/com_menus/models/list.php on line 143
Warning: Invalid argument supplied for foreach() in /home/www/%site_name%/htdocs/administrator/components/com_menus/models/list.php on line 147
Warning: Invalid argument supplied for foreach() in /home/www/%site_name%/htdocs/administrator/components/com_menus/views/list/view.php on line 65

Решение:

В файле /home/www/%site_name%/htdocs/libraries/joomla/html/html.php находим строчку
return call_user_func_array( array( $className, $func ), $args );
и добавляем значок «&» перед $args.
return call_user_func_array( array( $className, $func ), $args );

Warning: Parameter 3 to jw_gallery() expected to be a reference, value given in /home/www/ds15/htdocs/libraries/joomla/event/dispatcher.php on line 136

Решение не нашёл :(

У меня больше ошибок нет. Теперь питание компьютера отображение ошибок можно отключить.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *