从外部脚本引导joomla 2.5

时间:2014-06-04 06:28:55

标签: php joomla cron joomla2.5 joomla1.5

这曾经在1.5中工作......我可以设置以下代码:

function startJoomla() {
    define('_JEXEC', true);
    define( 'DS', DIRECTORY_SEPARATOR );
    $dir= dirname(__FILE__);
    define('JPATH_BASE', $dir);
    // load joomla libraries
    require_once JPATH_BASE . DS . 'includes' . DS . 'defines.php';
    require_once JPATH_LIBRARIES . DS . 'loader.php';
    jimport('joomla.base.object');
    jimport('joomla.factory');
    jimport('joomla.filter.filterinput');
    jimport('joomla.error.error');
    jimport('joomla.event.dispatcher');
    jimport('joomla.event.plugin');
    jimport('joomla.plugin.helper');
    jimport( 'joomla.utilities.utility' );
    jimport('joomla.utilities.arrayhelper');
    jimport('joomla.environment.uri');
    jimport('joomla.environment.request');
    jimport('joomla.user.user');
    // JText cannot be loaded with jimport since it's not in a file called text.php but in methods
    JLoader::register('JText', JPATH_BASE . DS . 'libraries' . DS . 'joomla' . DS . 'methods.php');
    JLoader::register('JRoute', JPATH_BASE . DS . 'libraries' . DS . 'joomla' . DS . 'methods.php');

    $mainframe = & JFactory::getApplication('site');
    $GLOBALS['mainframe'] = & $mainframe;
    return $mainframe;
    }

$mainframe = startJoomla();

jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.file');

然后,当我想从Joomla打电话时,我可以做以下事情:

$custom = new CustomController(); // assuming there's a com_custom somewhere

这适用于1.5。但在2.5中,上述内容根本不起作用。我找到了加载脚本的修订版本:

function startJoomla() {
    define('_JEXEC', 1);
    define( 'DS', DIRECTORY_SEPARATOR );
    $dir = dirname(__FILE__);
    define('JPATH_BASE', $dir); 
    // load joomla libraries
    require_once JPATH_BASE.'/includes/defines.php';
    require_once JPATH_BASE.'/includes/framework.php';
    require_once JPATH_BASE . DS . 'libraries' . DS . 'joomla' . DS . 'factory.php';
    // Instantiate the application.
    $app = JFactory::getApplication('site');
    // Initialise the application.
    return $app->initialise();          
}
$mainframe = startJoomla();

这样可以实现'JFactory :: getUser();'等功能。但将不再允许我使用像'new MycustomcomponentController();'这样的命令给我'核心'Joomla功能,但跳过我安装的一切。是否有适当的新修订的jimport指令汇编或者可能是JComponent的不同函数,它允许我调用我的自定义函数以及用于外部php文件的其他组件和模型?假设这将从CRON或类似的东西运行。

0 个答案:

没有答案