a-blog cmsのサイトで、URLパラメーターを取得してCMSで処理したいという事案がありました。
グローバル変数のドキュメントをみると、「%{QUERY}」というグローバル変数があるのですが、これだと、パラメーター部分まるごと、文字列として受け取れるだけです。
ちゃんと変数として扱う場合、一番簡単なのは、ページ取得後にJavaScriptで処理する方法ですが、ページを取得する前にゴニョゴニョしたかったので、グローバル変数としてURLパラメーターを取得できるようにしてみました。

参考:グローバル変数の作り方

a-blog cmsの設置ルートから、/php/ACMS/User/Hook.php extension/acms/Hook.php の「グローバル変数の拡張」の部分を修正します。

public function extendsGlobalVars(&$globalVars)
{
	$url_params = $_SERVER['QUERY_STRING'];//URLパラメーターの取得
	parse_str($url_params, $param_array);//パラメーターを配列に
	foreach ($param_array as $key => $value) {//キーを変数名にして値を設定
		$globalVars -> set(strtoupper($key), $value);
		$base64decoded = base64_decode($value);//base64でデコードした変数も作成
		if ($base64decoded) {
			$globalVars -> set(strtoupper('DECODED_'.$key), $base64decoded);//変数名にDECODED_を追加
		}
	}
}

パラメーターを取得して、変数名と値をa-blog cmsのグローバル変数にしています。
変数名は、a-blog cmsのグローバル変数の命名に合わせて、大文字に変換します。
今回は、Base64でエンコードしたデータがパラメーターの値になっていて、それをデコードした値が欲しかったため、デコードしたデータもグローバル変数にしています。
Base64のデコードは校正オプションでやろうと思ったんですが、グローバル変数には使えないんですね。


タグ:a-blog_cms ノウハウ PHP