Основные функции Joomla во внешних скриптах
Недавно я работаю над пользовательским компонентом 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::_() и т. Д.
В чем проблема? Как заставить эти функции работать должным образом?
Ваша помощь будет оценена.
1 ответ
У меня была похожая проблема раньше... Я создавал альтернативную точку входа для Joomla. Нативные классы используют значения по умолчанию, которые дают плохие результаты, когда "обходятся"...
Единственный способ обойти это - создать новый объект JURI с правильным URI.
$uri = JFactory::getURI('correct uri');