Oddy Oddy - 25 days ago 28
PHP Question

Load Joomla 3.x Framework and Modules in external PHP file

I am migrating my Joomla 2.5 site to Joomla 3.3.

Now I'm struggling with loading the joomla framework and displaying a module in a phpbb-Template.
Loading the Joomla framework worked fine in Joomla 2.5 with this code:

define( '_JEXEC', 1 );
define('JPATH_BASE', '/var/customers/webs/tf2swiss/joomlasite');
define( 'DS', DIRECTORY_SEPARATOR );
require_once('../configuration.php');
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
require_once ( JPATH_BASE .DS.'libraries'.DS.'joomla'.DS.'factory.php' );
require( JPATH_LIBRARIES. '/import.php');
// Joomla! library imports
jimport( 'joomla.environment.uri' );
jimport( 'joomla.user.user');
jimport('joomla.application.module.helper');

/* Create the Application */
$mainframe =& JFactory::getApplication('site');
jimport('joomla.plugin.helper');


But I doesn't work in Joomla 3.x now. The page stopps loading where this code is.
Using PHP in phpbb template files is enabled in the Security options.

Does anyone know how to load the joomla 3.x framework in external files?

Answer

The following works perfectly for me:

define('_JEXEC', 1);
define('JPATH_BASE', '../');
require_once JPATH_BASE . '/includes/defines.php';
require_once JPATH_BASE . '/includes/framework.php';

// Create the Application
$app = JFactory::getApplication('site');

Try changing this line which you currently have to a relative path as shown above. You may been to change ../ according to where you have your Joomla root in relation to your external file.

define('JPATH_BASE', '/var/customers/webs/tf2swiss/joomlasite');

To test if it's working, simply use something like this:

var_dump($app);

If you see data being shown, then your have successfully imported the framework

Comments