0

最近、カスタム 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();               
    }

JURI::root(); のような一部の Joomla コア関数を除いて、すべて正常に動作します。戻り値:

www.url.com/components/com_customcomp/custom_classes

それ以外の:

www.url.com/

また、JRoute::_() などの奇妙な結果が得られることもあります。

何が問題ですか ?その機能を正しく動作させるにはどうすればよいですか?

あなたの助けをいただければ幸いです。

4

1 に答える 1

1

以前にも同様の問題がありました...Joomlaの代替エントリポイントを作成していました。ネイティブクラスは、「回避」したときに悪い結果をもたらすデフォルト値を使用します...

それを回避する唯一の方法は、正しいuriを使用して新しいJURIオブジェクトを作成することです。

$uri = JFactory::getURI('correct uri');
于 2011-03-23T18:44:57.677 に答える