Je voudrais créer un lien dans le panneau d'administration qui redirige un utilisateur vers une URL SEF dans Frontend.
Code dans le backend
<?php
$link = JUri::root() . 'index.php?option=com_content&view=article&id=1';
echo '<a href="'. JRoute::_($link) . '">Test</a>'
?>
Cela ne peut pas être traduit en SEF car j'utilise JUri::root()
dans mon $link
.
Si c'est possible, quelle est la meilleure façon de procéder?
Depuis la version 3.9, il existe une méthode Joomla\CMS\Router\Route::link()
qui prend le client (site ou administrateur) comme premier argument.
$link = 'index.php?option=com_content&view=article&id=1';
echo '<a href="' . JRoute::link('site', $link) . '">Test</a>';
Si vous avez l'objet article disponible, vous devez utiliser ContentHelperRoute::getArticleRoute()
et passer le slug au lieu d'ID pour supprimer la requête de base de données supplémentaire et également la catégorie et la langue pour assurer un routage correct.
// Register helper class.
JLoader::register('ContentHelperRoute', JPATH_SITE . '/components/com_content/helpers/route.php');
$link = ContentHelperRoute::getArticleRoute($article->id . ':' . $article->alias, $article->catid, $article->language);
echo '<a href="' . JRoute::link('site', $link) . '">Test</a>';