2

このような質問はあまり受けないかもしれません...

組み込みの SEF であろうと、sh404sef のようなものであろうと、SEF が有効になっているときに非 SEF URL を処理できるようにするコンポーネントに取り組んでいます。

Joomla は元の非 SEF URL をどこにでも保存しますか。index.php?com=com_fred&view=ホームページ?

SEF がアクティブ化されると、JURI::getInstance() の値が SEF と同等の値に変更されることがわかりました。$REQUEST['U​​RI'] 値がすべてのプラットフォーム/サーバーなどで機能しないこともわかりました。

助けてくれてありがとう

4

6 に答える 6

4

このコードに戻って再試行しましたが、いくつかのエラーが発生したため、この新しいコードで以前に定式化した以前の回答に基づいて部分的に作り直しました (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);

ジュムラ!API ドキュメント: JInput-JUri


前の回答: グーグルで検索すると、次のことがわかりました

<?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 で問題なく動作しています! 1.5で動くかは不明

于 2015-09-24T15:28:58.797 に答える
4
  1. リクエストからすべての変数をGET/POST配列に取得します。この時点で、URL 文字列を生成する前に値を変更することもできます。

    $getVars = JRequest::get( 'GET' );
    
  2. URL 文字列が本当に必要な場合は、次の方法で取得できます。

    $newURL = http_build_query($getVars);
    

それが役に立てば幸い!

于 2012-10-28T06:32:12.133 に答える
3

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

于 2012-04-06T17:41:55.097 に答える
1

メニュー項目の場合は、'jos_menu' テーブルの 'link' 列に格納されます (ただし、itemid はこの文字列にはありません - それは 'id' 列です)。

それ以外の場合は、おそらくデータベースには保存されませんが、特にコア コンポーネントを使用すると、通常は非常に簡単に解決できます。サード パーティ製のコンポーネントを使用すると少し面倒になる場合がありますが、ほとんどのコンポーネントの MVC アーキテクチャを調べて理解することができます。

それ以外の場合は、いつでも開発サイトで SEF をオフにするか、このための開発サイトを作成できます。

気になる成分はありますか?

于 2009-09-28T08:10:08.977 に答える
0

非 SEF URL に対して特別なことをする必要はありません。SEF URL が有効になっている場合でも、誰かが SEF 以外の URL でサイトにアクセスすると、Joomla は正しいページを表示します。SEF URL を処理するコンポーネントの部分であるルーターは、Joomla に URL 情報を使用して何を表示するかを決定する方法を伝えるだけです。SEF 以外の URL が提示されると、Joomla は通常どおりクエリ文字列を解析します。

特定のコンポーネントについて、URL は次のように構築されます -

index.php?option=com_name&view=XXXX&id=1111&Itemid=11111

  • オプションはコンポーネントの名前です
  • もちろん、ビューは表示するビューです
  • id は、特定のコンテンツ アイテムの ID です。
  • itemid は、モジュール/テンプレートの割り当てを決定するために使用されたメニュー項目です
于 2012-02-25T05:39:46.170 に答える
0

ここに投稿したリンク: Joomla URLs: An article doesn't have a pretty URLそれ自体?

Joomla 1.5 の URL に非常に優れた「クラッシュ コース」を提供します。

于 2012-02-24T09:29:03.793 に答える