ti-enxame.com

Como posso alterar um URL do SEF para exibir outro modelo?

Estou usando o Joomla 3.3 e o K2 v2.6.9.

Eu tenho uma exibição de categoria com vários itens, nomeadamente livros. O URL fica assim:

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

Para apresentar esses itens em uma lista no estilo CSV, preciso usar outro modelo, chamado csv-view. Então, eu crio o link para esta visualização por este código:

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

resultando neste URL:

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

Isso funciona.

Mas quando eu ativo o URL SEF, o URL muda para

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

e o URL estendido seria

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

e esta página não pode ser encontrada.

Então, aqui está minha pergunta: como posso construir o URL correto para a exibição CSV, mesmo que os URLs SEF estejam ativados?

5
lars k.
  1. Em vez de $_SERVER['REQUEST_URI'], Você pode confiar em JUri::root()

  2. não é possível adicionar o parâmetro de modelo concatenando-o com &. Tem que ser ? ... mas depende da consulta do URL. Portanto, você precisa de um pedaço de código como este para definir a cola:

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

Como sugerido por @fruppel de uma maneira mais compacta:

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