После обновления Joomla с версии 3.4.x до 3.5.1 некоторые администраторы в лог файлах веб-сервера могут наблюдать следующие ошибки:

[Wed May 11 05:54:42 2016] [error] [client 185.3.16.210] PHP Notice:  Undefined variable: this in /libraries/cms/application/cms.php on line 430, referer: http://useful-notes.ru/
[Wed May 11 05:54:42 2016] [error] [client 185.3.16.210] PHP Notice:  Undefined variable: this in /libraries/cms/application/cms.php on line 430, referer: http://useful-notes.ru/
[Wed May 11 05:54:42 2016] [error] [client 185.3.16.210] PHP Notice:  Undefined variable: this in /libraries/cms/application/cms.php on line 430, referer: http://useful-notes.ru/
[Wed May 11 05:54:42 2016] [error] [client 185.3.16.210] PHP Notice:  Undefined variable: this in /libraries/cms/application/cms.php on line 430, referer: http://useful-notes.ru/

Строка 430 в файле cms.php

// Inject this application object into the JMenu tree if one isn't already specified
if (!isset($options['app']))
{
    $options['app'] = $this;
}

Это уведомление о пустой переменной не является проблемой ядра Joomla.

Метод который вызывает ошибку JApplicationCms::getMenu() не объявлен как статический. Если вы получаете эту ошибку, это означает, что расширение вызывает этот метод статически.

Будет правильным использовать следующий вызов JFactory::getApplication()->getMenu()

Для решения проблемы вам достаточно пройтись поиском текста в файлах ваших сторонних расширений для Joomla и найти вхождения JSite::getMenu() и заменить его на JFactory::getApplication()->getMenu()

Пример решения проблемы для модуля IceMegaMenu, файл /modules/mod_icemegamenu/libs/menucore.php

		if($item->type == 'menulink')
		{
			//$menu = &JSite::getMenu();
			$menu = &JFactory::getApplication()->getMenu();
			if($newItem = $menu->getItem($item->query['Itemid'])) {
    			$tmp = clone($newItem);
				$tmp->name	 = 'title.']]>';
				$tmp->mid	 = $item->id;
				$tmp->parent = $item->parent_id;
			} else {
				return false;
			}
		}

Строчку номер три комментируем и вставляем строку номер четыре. В файле /modules/mod_icemegamenu/helper.php делаем тоже самое.

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