URLの末尾に?hoge=fuga&fugo=hogoみたいなクエリをつけて、ページ内容を出し分けたい

2014年10月17日 at 18:54

たびたびすいません。
掲題の通りです。

よくURLの末尾に?をつけて動的にページ内容を変える手法がありますが、concrete5では可能でしょうか?

やりたいのは、エリアの出し分けです。Main_A エリア、 Main_Bエリア、Main_Cエリアを容易し、?area=a でアクセスすると、Main_BとMain_Cが非表示になる、みたいな感じです。

タグ:

Re: URLの末尾に?hoge=fuga&fugo=hogoみたいなクエリをつけて、ページ内容を出し分けたい

2014年10月20日 at 7:46
テーマに処理を書かなくてはいけないので、強引技になってしまいますが、可能です。

強引技で脆弱性とか考慮していないので、PHP得意な人、直してください!
http://gist.github.com/katzueno/ad6573a3a8bb5393f8ec

if (isset($_GET['area'])) $area = $_GET['area'];

if ($area = 'a') {
$a = new Area('Main_A');
$a->display($c);
}

if ($area = 'b') {
$a = new Area('Main_B');
$a->display($c);
}

if ($area = 'c') {
$a = new Area('Main_C');
$a->display($c);
}
 

Re: URLの末尾に?hoge=fuga&fugo=hogoみたいなクエリをつけて、ページ内容を出し分けたい

2014年10月20日 at 11:36
ありがとうございます。
参考にします。
 

Re: URLの末尾に?hoge=fuga&fugo=hogoみたいなクエリをつけて、ページ内容を出し分けたい

2014年10月21日 at 10:29
Katzさんのコードが間違っていたので修正しました。
 

Re: URLの末尾に?hoge=fuga&fugo=hogoみたいなクエリをつけて、ページ内容を出し分けたい

2014年12月8日 at 22:49
少し古く成ってしまっていますが、追記させて頂きます。

改善点は、エリアが複数に成る事がない前提で、switch文で判定しています。
また、クエリーストリングでパラメータを取得するので、
switch文で型判定(文字列)もしています。

ただし、クエリーストリングは、同一パラメータを付与出来てしまう為、
同一パラメータに対する処理も考慮した方が良いかも知れません。


$area = isset($_GET['area']) ? $_GET['area'] : '';

switch (true) {
case $area === 'a':
$a = new Area('Main_A');
$a->display($c);
break;
case $area === 'b':
$a = new Area('Main_B');
$a->display($c);
break;
case $area === 'c':
$a = new Area('Main_C');
$a->display($c);
break;
default:
}