カスタムのPHPスクリプトがあり、JUMIの下で実行して、データを実行および表示します。
カスタムスクリプトは、次のようなSEF URLにアクセスできます。
http://www.mysite.com/jumi-script
これは書き換えられたバージョンです
http://www.mysite.com/index.php?option=com_jumi&view=application&fileid=11&Itemid=271
次のようなパラメータを適用してデータをフィルタリングしたいと思います
category=mycat&place=myplace
このような
/index.php?option=com_jumi&view=application&fileid=11&Itemid=271&category=mycat&place=myplace
そして、私たちはこのようなSEF URLを取得したいと思います
/jumi-script/mycat/myplace
そしてこれらの変数を私のスクリプトで処理します
$mycat = JFactory::getApplication()->input->post->get('category');
$myplace = JFactory::getApplication()->input->post->get('place');
これをどのように入手できますか?私たちはテストしています
$currentUrl =& JURI::getInstance();
$currentUrl->setVar( 'mycat', $catvalue );
残りのクエリ文字列は失われています。上記は達成できますか?なにか提案を?
ありがとうございました
ここでcom_jumiのルーター実装を見る https://github.com/BonavalMultimedia/com_jumi/blob/master/com_jumi_bnvl/router.php 私にとって、sefが余分なパラメーターを処理しないようですオン(JumiParseRoute関数を参照)。
この関数を変更して追加のパラメーターを確認し、それらを$vars
配列に追加して、JInput
またはJRequest
を使用して、以前のJoomlaバージョンを使用している場合に使用できるようにする必要があります。 3.0
パラメータを確認するには、$segments
パラメータで定義されているかどうかを確認します。
category
、place
、またはその両方があるかどうかを確認するには、独自の基準を決定するか、可能な値をどこにでも格納して、どのセグメントに「タイプ」の値があるかを確認できます。
例:私の基準は、URLが常にjumi/category/placeになることです。次に:
$vars['category'] = $segments[1];
$vars['place'] = $segments[2];
もちろん、$segment
インデックスが定義されていることを確認し、必要なチェックを行う必要があります。
たぶん、ルートを作成するときにSEFのURLを生成する必要があります。次に、JumiBuildRoute
関数を変更して、基準を満たします。
コンポーネントの宛先コードを編集したくない場合は、次のようなURLを使用します。
http://www.mysite.com/jumi-script?category=mycat&place=myplace
スクリプトを取得します。これで、古いJoomlaバージョンでは、両方の値にJInput
またはJRequest
を介してアクセスできるはずです。
よろしく、
あなたのURLについて/index.php?option=com_jumi&view=application&fileid=11&Itemid=271&category=mycat&place=myplace
:
$JInput = JFactory::getApplication()->input;
$myRequest = $JInput->getArray(array(
'option' =>'',
'view' =>'',
'fileid' =>'',
'Itemid' =>'',
'category'=>'',
'place' =>''
));
またはfilter入力したい場合:
$myRequest = $JInput->getArray(array(
'option' =>'Word',
'view' =>'alnum',
'fileid' =>'int',
'Itemid' =>'int',
'category'=>'string',
'place' =>'string'
));
各入力はフィルタリングされたタイプとして値を返します。値がない場合はNULL
を返します。