web-dev-qa-db-ja.com

別のテンプレートを表示するようにSEF URLを変更するにはどうすればよいですか?

Joomla 3.3とK2 v2.6.9を使用しています。

私はいくつかのアイテム、つまり本を含むカテゴリービューを持っています。 URLは次のようになります。

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

これらのアイテムをCSVスタイルのリストで表示するには、csv-viewという別のテンプレートを使用する必要があります。だから私はこのコードでこのビューへのリンクを作成します::

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

このURLになります:

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

これは機能します。

しかし、SEF URLをアクティブにすると、URLは次のように変わります

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

そして拡張されたURLは

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

このページが見つかりません。

だから私の質問です:SEF URLがアクティブになっている場合でも、CSVビューの正しいURLを構築するにはどうすればよいですか?

5
lars k.
  1. _$_SERVER['REQUEST_URI']_の代わりに、JUri::root()を使用できます

  2. テンプレートパラメータを_&_と連結して追加することはできません。 _?_ ...である必要がありますが、URLクエリによって異なります。したがって、接着剤を定義するには、次のようなコードが必要です。

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

@fruppelがよりコンパクトな方法で提案しているように:

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