最近我正致力于定制Joomla组件。我需要一些外部脚本中的Joomla核心功能(不属于Joomla框架)。
假设我有组件及其自定义类,它们不属于Joomla结构。
www.url.com/components/com_customcomp/custom_classes/some_class.php
所以,我将Joomla类加载到其中:
if (!defined('JPATH_COMPONENT') or !constant('JPATH_COMPONENT')){
define( '_JEXEC', 1 ); //let direct access
define( 'JPATH', $_SERVER['DOCUMENT_ROOT']);
define( 'JPATH_BASE', $_SERVER['DOCUMENT_ROOT'] . '/administrator' );
define( 'DS', DIRECTORY_SEPARATOR );
define('JPATH_COMPONENT', JPATH_BASE.DS.'components'.DS.'com_customcomp');
//load joomla framework
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php');
require_once( JPATH_LIBRARIES .DS.'joomla'.DS.'factory.php');
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
}
除了一些Joomla核心函数,比如JURI :: root();返回:
www.url.com/components/com_customcomp/custom_classes
而不是:
www.url.com/
同样一些奇怪的结果会给JRoute :: _()等等。
有什么问题?如何使这些功能正常工作?
我们将不胜感激。
答案 0 :(得分:1)
之前我遇到过类似的问题...我正在为Joomla创建替代入口点。 本机类使用默认值,当“解决”...
时会产生错误的结果唯一的方法是创建一个新的JURI object with correct uri。
$uri = JFactory::getURI('correct uri');