web-dev-qa-db-fra.com

Est-ce que JRoute par défaut trouve le chemin d'accès au lien de menu (SEF)

Qu'est-ce que je comprends dans Joomla, c'est que jusqu'à ce que vous créiez un menu pour une vue spécifique, vous obtiendrez des liens de composants vers ses vues, de cette manière:

component/component_name/location/new-york (ex #1)

Si vous créez un lien pour cette vue, il devrait être transformé en alias de menu + vue + nom ou identifiant de l'élément, comme ceci:

/locations/location/new-york (ex #2)

Cependant, je l'ai fait et je continue à recevoir un ancien lien comme dans l'exemple n ° 1. Cependant, si j'ajoute Itemid au lien, le résultat attendu est identique à celui de l'exemple n ° 2. Voir ci-dessous ce que je veux dire:

JRoute::_('index.php?option=com_modern_tours&view=location&alias=' . $asset->alias .'&Itemid=138'); ceci se transforme en ceci /locations/location/new-york

Mais ça

JRoute::_('index.php?option=com_modern_tours&view=location&alias=' . $asset->alias); ceci se transforme en ceci component/component_name/location/new-york

On dirait que dans ce cas, je dois créer une fonction supplémentaire pour rechercher dans le menu et ajouter l'item manquant. Bien que je ne sache pas si c'est vraiment ainsi que cela devrait fonctionner, ou si Joomla lui-même devrait s'en charger? Est ce que quelqu'un pourrait m'expliquer ça, s'il vous plait

2
user1876234

JRoute::_() ne trouve rien. Cela transforme simplement les liens non-SEF en SEF. Cela dépend du routeur de votre composant. À moins que votre composant implémente le routage moderne (introduit dans la version 3.7, je pense), vous devez trouver le Itemid.

Avant le routage moderne, chaque composant principal de Joomla utilisait sa propre classe d'assistance de routage pour rechercher des éléments de menu, rechercher les ID et les ajouter à des URL non-SEF. Le routage moderne inclut cela dans son ensemble de règles, de sorte que l'écriture pour chaque composant n'est plus nécessaire.

1
Sharky