2009-06-13 4 views
2

私はおそらくこのような多くの質問を得ることはないと知っています...SEFが有効な間にSEF以外のURLを見つける方法(Joomla 1.5)

私はSEFが有効な間に非SEF URLを扱うことができるようにしたいコンポーネントに取り組んでいます。組み込みのSEFまたはsh404sefのようなもの。

JoomlaはSEF以外の元のURLをどこにでも格納しますか? ie。 index.php?com = com_fred & view = homepage?

SEFがアクティブになっていると、JURI :: getInstance()の値がSEFの等号に変更されています。 は、私はまた、$のREQUEST [「URI」]値は、任意のヘルプメニュー項目の

+0

あなたは '$ _SERVER ['REQUEST_URI']'を意味しないのですか? – Gumbo

答えて

1

ため

おかげで、それが「jos_menu」テーブルに保存されているなど、すべてのプラットフォーム/サーバ上で動作しないことがわかりました、 'リンク'列に表示されます(itemidはこの文字列にはありません - 'id'列です)。

他のものは、データベースに格納されていない可能性がありますが、通常はコアコンポーネントを使用するとかなり簡単に処理できます。サードパーティのコンポーネントでは苦労するかもしれませんが、ほとんどのコンポーネントのMVCアーキテクチャを調べて把握することができます。

そうでなければ、あなたのdevサイトでSEFをオフにしたり、devサイトを作成することができます。

あなたが興味を持っている特定のコンポーネントはありますか?私はここに掲載

0

内のURLのための非常に良い「クラッシュコース」を提供します。 SEF URLを有効にしても、誰かがSEF以外のURLでサイトにアクセスすると、Joomlaは正しいページを表示します。 SEF URLを処理するコンポーネントの部分であるルーターは、URL情報を使用して何を表示するかをJoomlaに指示します。 SEF以外のURLが表示された場合Joomlaは通常通りクエリ文字列を解析します。 ?任意の構成要素については

は、URLは次のように構築されています -

index.phpのオプション= com_name &ビュー= XXXX & ID = 1111 & ITEMID = 11111

  • オプションはの名前ですコンポーネント
  • 表示するビューはもちろん当てはまる
  • idは特定のコンテンツアイテムのIDです
  • itemidは、モジュール/テンプレートの割り当てを決定するために使用したメニュー項目です。
3

JRequest :: get(true)を使用すると、URLからすべてのクエリパラメータの配列を取得できます。ただし、GETパラメータのみを返すか、すべてのREQUESTパラメータ(これはもっと可能性が高いと思います)を行うかどうかを確認するのに十分なチェックはしていません。しかし、それはあなたが探しているものに役立つかもしれません。

4
  1. GET/POSTリクエストのすべてのヴァースを配列に取得します。この時点で、URL文字列を生成する前に値を変更することもできます。

    $newURL = http_build_query($getVars); 
    

はそれが役に立てば幸い:

$getVars = JRequest::get('GET'); 
  • あなたが本当にURL文字列が必要な場合は は、あなたが得たことができます!

  • 2

    私はこのコードに戻ってきましたが、もう一度試しましたが、いくつかのエラーが出たので、前回の回答に基づいて部分的に修正しました(これはJoomla!3.4.5でうまくいきました)

    // build the JInput object 
    $jinput = JFactory::getApplication()->input; 
    // retrieve the array of values from the request (stored in the application environment) to form the query 
    $uriQuery = $jinput->getArray(); 
    // build the the query as a string 
    echo 'index.php?' . JUri::buildQuery($uriQuery); 
    

    のJoomla! APIのドキュメント:JInput - JUri


    前の回答:I found this周りグーグル:

    <?php 
        // "unparse" the Joomla SEF url to get the internal joomla URL 
        JURI::current();// It's very strange, but without this line at least Joomla 3 fails to fulfill the task 
        $router =& JSite::getRouter();// get router 
        $query = $router->parse(JURI::getInstance()); // Get the real joomla query as an array - parse current joomla link 
        $url = 'index.php?'.JURI::getInstance()->buildQuery($query); 
    ?> 
    

    私はJoomlaのでそれをテストしてみました! 3.4.4とその作業の罰金! Dunnoと一緒に使えるのなら1.5