Je mon expérience, ce problème se pose dans les cas où vous avez un module (ex. La liste des produits virtuemart) placé quelque part pas dans la section où votre lien doit apporter. Supposons que vous avez configuré VM (com_virtuemart) dans votre menu avec Itemid === 731 et que vous insérez un module de liste de produits dans la page d'accueil (com_content). Lorsque vous cliquez sur le produit qui vous amène à la page du produit, vous attendez que le module configure le lien de sorte que votre Item de machine virtuelle soit inclus dans le lien ([linkl] & Itemid = 731) - mais dans la plupart des cas cela n'arrive pas, votre Itemid n'est pas ajouté à l'URL.
En outre, vous ne pouvez pas toujours attendre (comme dans ce cas) d'avoir le Itemid correct dans vos paramètres url. donc JRequest::getint('Itemid')
choses ne fonctionneront pas comme prévu. Je ne connais pas la raison pour laquelle la méthode JRoute :: _ (cela peut être facilement fait avec un paramètre supplémentaire "$ searchForItemid") ne recherche pas votre Itemid dans la table de menu QUAND VOUS N'ÊTES PAS DANS LE COMPOSANT! C'est-à-dire que si vous mettez le même module de liste de produits visible dans la page d'accueil de VM (com_virtuemart), vous verrez que le Itemid apparaît sur vos liens. Mais dans la plupart des cas, ce module doit être ailleurs.
C'est toujours le cas avec J! 2.5.
Je n'ai pas de solution pour vous mais je peux vous dire comment je surmonte cela.
De toute évidence, vous pouvez ouvrir le module et coder en dur le Itemid. Ceci, en Italie, est appelé "PORCATA" (traduction: codage de type cochon) et je déconseille vraiment pour des raisons évidentes
Ce que je fais est j'utilise le remplacement de la langue (J! 2.5 - Langue Responsable: Langue Dérogations), inscrivez-vous comme un remplacement VM_ITEMID === 731 puis dans le module i créer un modèle personnalisé et modifiez le lien de:
JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id...')
à:
JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id...'.'&Itemid='.JText::_("VM_ITEMID"))
Je répète, ce n'est pas une solution au problème et cela devrait, à mon humble avis, être pris en charge par le noyau, mais cela fonctionne et de cette façon, vous avez la possibilité de changer le Itemid lié au composant. espérons que cela aide
oui, je sais que je peux Ajoutez-le à la main mais Joomla devrait le gérer – miojamo
Il ne le gère mais seulement une fois qu'il affiche votre composant du 1er menu cliquez, alors il vous appartient d'ajouter l'ItemId à l'URL lorsque vous liez à différentes vues en vous r composant. Certains composants n'ont peut-être pas besoin de l'utilisation de ItemId afin de forcer l'utilisation de celui-ci ne serait pas idéal. Cela le rend plus flexible et l'ajouter à la main n'est pas un gros problème. – Martin