2011-06-27 5 views
1

Question: Comment activer les routes du router.php de mon composant dans un plugin?Utilisation des routes de composant à partir de 'router.php' dans le plugin personnalisé dans Joomla

Je travaille sur un plugin personnalisé qui redirige la route de profil d'utilisateur par défaut:

index.php?option=com_users&view=profile (SEF: /component/users/profile) 

à mon propre composant où j'ai d'autres paramètres

index.php?option=com_mycomponent&view=profile (SEF: /alias/profile) 

mon front- plugin de fin:

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); 
     } 
    } 
} 

Dans mon composant tous les liens sont routés correctement y-à-dire:

index.php option = com_mycomponent & view = profil =>/alias/profil

dans le plugin JRoute se traduit comme suit:

index .php? option = com_mycomponent & view = profil =>/component/mycomponent/profil

ne peut pas utiliser:

  • noyau hacks
  • .htaccess
  • Joomla Redirect Plugin

Répondre

1

dans le fichier xml plugin, vous devez ajouter nouveau paramètre qui vous permettra de choisir la Itemid désiré (menuitem) donc il devrait ressembler à ceci

<param name="menuitem" name="my_itemid" title="Target Itemid" description=""/> 

Ensuite, vous devrez choisir menuitem désiré qui a l'alias que vous vouliez à partir des paramètres de plug-in dans la zone administrateur puis dans le plug-in lui-même il suffit d'utiliser comme ceci:

$route = JRoute::_('index.php?Itemid='.$this->params->get('my_itemid')); 

et cela est valable aussi

$route = JRoute::_('index.php?option=com_mycomponent&view=profile&Itemid='.$this->params->get('my_itemid')); 
+0

merci beaucoup pour votre message, même si j'ai déjà trouvé une soultion. Je suis sûr que cela fonctionnerait mais pas où plus d'une langue est utilisée sur le site. Pour le résoudre, j'ai utilisé un lien comme param et la langue actuelle pour obtenir ** Itemid ** de la table 'jos_menu' – WooDzu

Questions connexes