Dans mon module, ce code est utilisé pour générer l'URL de la page:
JURI::base() . ContentHelperRoute::getArticleRoute( $article->id, $article->catid )
Cela fonctionne exactement comme il se doit et produit une URL ressemblant à ceci:
http://example.com/index.php?option=com_content&view=article&id=83&catid=26&Itemid=162
Mais j'aimerais savoir s'il existe un moyen de faire en sorte que le module génère l'URL SEF de la page en cours. Quelque chose comme:
http://example.com/resources/blog/83-illustration
Utilisez JRoute pour cela:
rtrim(JUri::base(), '/') . JRoute::_(ContentHelperRoute::getArticleRoute( $article->id, $article->catid ))
mais vous n'avez pas besoin de JUri :: base () si vous ne voulez pas vous lier à un autre domaine.
Il existe un plugin système appelé System: SEF. Lorsqu'il est activé, ce plugin analyse la sortie HTML finale juste avant son envoi au navigateur et remplace tout lien non-SEF par son équivalent SEF en l'exécutant via JRoute::_($url);
. Cela ne fonctionne que pour les liens internes bien que commençant par index.php
, Donc cela ne fonctionnera pas si le lien commence par http://
.
Essayez de supprimer JUri::base()
(et donc de supprimer le lien http: // du lien) et cela devrait fonctionner si le plug-in est activé.
Voici un autre moyen d'obtenir l'URL racine correcte du site. Cela prend également soin si votre site est dans un sous-dossier
$rootURL = rtrim(JURI::base(),'/');
$subpathURL = JURI::base(true);
if(!empty($subpathURL) && ($subpathURL != '/')) {
$rootURL = substr($rootURL, 0, -1 * strlen($subpathURL));
}
Alors tu peux faire
$url = $rootURL.JRoute::_(ContentHelperRoute::getArticleRoute( $article->id, $article->catid ));