[a-blog cms] URLパラメーターをグローバル変数にする
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のデコードは校正オプションでやろうと思ったんですが、グローバル変数には使えないんですね。