Использование маршрутов компонента из 'router.php' в пользовательском плагине в Joomla
Вопрос: Как включить Маршруты из router.php моего компонента в плагине?
Я работаю над пользовательским плагином, который перенаправляет маршрут из профиля пользователя по умолчанию:
index.php?option=com_users&view=profile (SEF: /component/users/profile)
на мой собственный компонент, где у меня есть дополнительные настройки
index.php?option=com_mycomponent&view=profile (SEF: /alias/profile)
мой внешний плагин:
class plgSystemMyPlugin extends JPlugin
{
// constructor
function plgSystemMyPlugin( &$subject, $params ) {
parent::__construct( $subject, $params );
}
// run after the framework has loaded and the application initialize method has been called
function onAfterInitialise() {
// when component users and view profile are called
if( isset($_GET['option'], $_GET['view'])
&& $_GET['option'] == 'com_users'
&& $_GET['view'] == 'profile' )
{
$route = JRoute::_('index.php?option=com_mycomponent&view=profile' );
JFactory::getApplication()->redirect($route, null, null, true);
}
}
}
В моем компоненте все ссылки перенаправлены правильно, т.е.
index.php? option = com_mycomponent & view = profile => / alias/ profile
в плагине JRoute переводит это следующим образом:
index.php? option = com_mycomponent & view = profile => / component / mycomponent/ profile
не можете использовать:
- основные хаки
- .htaccess
- Joomla Redirect Плагин
1 ответ
В XML-файле плагина вы должны добавить новый параметр, который позволит вам выбрать нужный Itemid(menuitem), чтобы он выглядел следующим образом
<param name="menuitem" name="my_itemid" title="Target Itemid" description=""/>
Затем вам нужно будет выбрать желаемый пункт меню с псевдонимом, который вы хотели, из параметров плагина в области администратора, а затем в самом плагине просто использовать так:
$route = JRoute::_('index.php?Itemid='.$this->params->get('my_itemid') );
и это тоже верно
$route = JRoute::_('index.php?option=com_mycomponent&view=profile&Itemid='.$this->params->get('my_itemid') );