it-swarm.it

Come posso modificare un URL SEF per visualizzare un altro modello?

Sto usando Joomla 3.3 e K2 v2.6.9.

Ho una vista di categoria con diversi elementi, vale a dire libri. L'URL è simile al seguente:

http://localhost/index.php?option=com_k2&view=itemlist&task=category&id=214:publikationen&Itemid=203

Per presentare questi elementi in un elenco in stile CSV, devo utilizzare un altro modello, chiamato csv-view. Quindi creo il collegamento a questa vista con questo codice:

<?php echo $_SERVER['REQUEST_URI']; ?>&amp;template=csv-view

risultante in questo URL:

http://localhost/index.php?option=com_k2&view=itemlist&task=category&id=214:publikationen&Itemid=203&template=csv-view

Questo funziona.

Ma quando attivo l'URL SEF l'URL cambia in

http://localhost/navigation/forschung/itemlist/category/214-publikationen.html

e l'URL esteso sarebbe

http://localhost/navigation/forschung/itemlist/category/214-publikationen.html&template=csv-view

e questa pagina non è stata trovata.

Quindi, ecco la mia domanda: come posso costruire l'URL corretto per la vista CSV anche se gli URL SEF sono attivati?

5
lars k.
  1. Invece di $_SERVER['REQUEST_URI'], Puoi fare affidamento su JUri::root()

  2. non è possibile aggiungere il parametro template concatenandolo con &. Deve essere ? ... ma dipende dalla query Url. Pertanto, è necessario un pezzo di codice come questo per definire la colla:

    $uri = JUri::getInstance($url);
    $query = $uri->getQuery();
    
    if (empty($query))
    {
        $glue = '?';
    }
    else
    {
        $glue = '&';
    }
    

Come suggerito da @fruppel in un modo più compatto:

    $uri = JUri::getInstance($url); 
    $uri->setVar('tmpl', 'csv-view'); 
    $url = $uri->toString();
4
Anibal