J'utilise Joomla 3.3 et K2 v2.6.9.
J'ai une vue de catégorie avec plusieurs éléments, à savoir des livres. L'URL ressemble à ceci:
http://localhost/index.php?option=com_k2&view=itemlist&task=category&id=214:publikationen&Itemid=203
Pour présenter ces éléments dans une liste de style CSV, je dois utiliser un autre modèle, appelé csv-view
. Je crée donc le lien vers cette vue par ce code:
<?php echo $_SERVER['REQUEST_URI']; ?>&template=csv-view
résultant dans cette URL:
http://localhost/index.php?option=com_k2&view=itemlist&task=category&id=214:publikationen&Itemid=203&template=csv-view
Cela marche.
Mais quand j'active SEF URL, l'URL devient
http://localhost/navigation/forschung/itemlist/category/214-publikationen.html
et l'URL étendue serait
http://localhost/navigation/forschung/itemlist/category/214-publikationen.html&template=csv-view
et cette page est introuvable.
Voici donc ma question: comment puis-je construire l'URL correcte pour la vue CSV même si les URL SEF sont activées?
Au lieu de $_SERVER['REQUEST_URI']
, Vous pouvez compter sur JUri::root()
le paramètre template ne peut pas être ajouté en le concaténant avec &
. Ce doit être ?
... mais cela dépend de la requête URL. Ainsi, vous avez besoin d’un morceau de code comme celui-ci pour définir le lien:
$uri = JUri::getInstance($url);
$query = $uri->getQuery();
if (empty($query))
{
$glue = '?';
}
else
{
$glue = '&';
}
Comme suggéré par @fruppel d'une manière plus compacte:
$uri = JUri::getInstance($url);
$uri->setVar('tmpl', 'csv-view');
$url = $uri->toString();