Использование маршрутов компонента из 'router.php' в пользовательском плагине в Joomla - PullRequest
1 голос
/ 28 июня 2011

Вопрос: Как мне включить Маршруты из 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 Plugin

1 Ответ

1 голос
/ 29 июня 2011

в файле плагина 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') );
...