Strict Standards: Non-static method JSite::getMenu() should not be called statically

selva picture selva · Apr 10, 2013 · Viewed 27.3k times · Source

I'm a newbee in joomla. When I change my template to other like http://www.joomla24.com/Joomla_3x_Templates/Joomla_3x_Templates/Oliverio_Lite.html

I'm getting the following error

Strict Standards: Non-static method JSite::getMenu() should not be called statically, assuming $this from incompatible context in ..\xampp\htdocs\joomla\templates\oliveriolite\index.php on line 91

Strict Standards: Non-static method JApplication::getMenu() should not be called statically, assuming $this from incompatible context in ..\xampp\htdocs\joomla\includes\application.php on line 569

Answer

Bakual picture Bakual · Apr 11, 2013

It's quite simple. Your template calls a function named getMenu() statically. Meaning the call looks like this: $app::getMenu(). But it should look like this: $app->getMenu(). The variable name ($app) doesn't matter, the colon vs arrow matters.

The correct way to get the menu is:

$app = JFactory::getApplication();
$menu = $app->getMenu();

or even shorter:

$menu = JFactory::getApplication()->getMenu();