a-blog cmsでオリジナルモジュール
このブログでも以前紹介しましたが、うちにくるcms案件はすべてa-blog cmsを使っています。
今回はa-blog cmsのオリジナルGETモジュールの中身を、DBの処理から普通のPHPで書いたのですが、何かの理由で直接書いてしまいたい場面もあるかもしれませんので、勉強になった点を忘れない様にメモしておきます。
<?php require_once ACMS_LIB_DIR.'GET.php'; class ACMS_GET_Ideasource_filename extends ACMS_GET { function get() { if(isset($_POST)){ $Tpl = new Template($this->tpl, new ACMS_Corrector()); //配列宣言 $all = array(); //希望の処理をする(例えばDBからデータひっぱるとか) //今回はDB関係の処理から書きました。 //〜以下省略〜 //データが出来上がったら加工したデータを連想配列に入れる(連想配列ならテンプレートで分かりやすい) //例えば… $value1 = 'hoge'; $value2 = 'hogehoge'; $value3 = ''; $all[] = array( 'key1' => $value1, //テンプレートでは{key1}になります。 'key2' => $value2, 'key3' => $value3, ); //連想配列からnull要素を削除(nullが残るとテンプレートでveilが効かない) $max = count($all); //配列の数を取得 for($i=0;$i<$max;$i++){ $all[$i] = array_merge(array_diff($all[$i], array(''))); } foreach( $all_distributors as $val ) { $Tpl->add('fieldLoop:loop', $val); } //テンプレートに処理済みの文字列として返す return $Tpl->get(); } } } ?>
今回は加工したデータを最終的に2次元連想配列に入れて、テンプレートに返してやるという流れなんですが、その際にnullの項目があるとveilが効かないという事を教えてもらいました。veilを使う場合は、nullは項目ごと削除しておかなければいけません。
ちなみに自分はよく分かっていませんでしたが、GETモジュールという名前ですが、当然ながらPOSTのデータも処理出来ます。(最初はGETしか扱えないかと思ってました。だから今回はあえてisset($_POST)になってる。微妙。)
といってもa-blog cmsは、オリジナルモジュールが作れる機能がちゃんと用意されています。本当は用意された機能を使った方が効率はいいはずです。今回テーブルをJOINしたり複数回まわす書き方がよく分からなかったのでDB処理は自分で書きましたが、このあたりはもう少し深く勉強していきたいと思います。