カラーミーショップのカスタマイズをしていて調べたので備忘メモ。カラーミーの変数の中身を手っ取り早く知りたい!という時にSmartyでvar_dumpする方法です。お急ぎの方は最後だけ見てください。
この記事の目次
Smartyとは
まず、カラーミーショップはSmartyというPHPのテンプレートエンジンでできています。
……と言われても、何??って感じですよね。私も最初はそうでした。
テンプレートエンジンというのは、「データ(=情報の中身)」と「テンプレート(=ひな型)」を別々に保存しておき、出力するときにそれを合体させて出力する仕組み、のようなものです。使う開発言語や環境によっていろいろなテンプレートエンジンがあり、Smartyはその中のひとつです。言語はPHPです。
カラーミーショップはそのSmartyをもとにして構築されています。
ざっくりイメージとしては、「カラーミーはPHPのSmartyというパッケージで書かれている」と思えばいいかな。たぶんショップのカスタマイズをするだけならそれで十分。
カラーミー公式マニュアルには配列の中身まではのっていない
カラーミーでソースコードからカスタマイズをする場合、公式マニュアルの独自タグ一覧などを参考にしながら書いていきます。
がしかし!公式マニュアルには配列や変数の中身まではのっていません。当たり前ですが。
今回私がやりたかったのは、「商品詳細ページにオプション名+オプション項目の一覧を表示する」というものでした。マニュアルを見て「option_value」に情報が入っていそうなのはわかるんだけど、マニュアルの内容だけでは意図した通りに取得できず、オプション表のHTMLを参考にしようと見てみるとオプションが1つの時と2つの時でソースを分けておりそんな冗長なことはしたくない!となり……、最終的に「$option_valueの配列の中身がわかれば直接取得できるのに」となったわけです。
一応マニュアルを調べたりぐぐったりしたのですが、自分で直接中身を見たほうが早い。var_dumpしたい。あれ、でもSmartyでvar_dump的なことってどうやるんだろう。
debug_print_varで中身を見る
と思ってぐぐったら、ちゃんとあるんですね。「debug_print_var」。
たとえば、「sample」という名前の配列変数の中身を出力するときは、以下のように書きます。
//基本の書き方(カラーミーでは動かない) {$sample|@debug_print_var}
さっそく書いてみた!!……あれ、動かない…。
単純なミスでした。カラーミーではタグの部分を<>で囲まないといけないのでした。というわけで正解はこちら。
<{$sample|@debug_print_var}>
↓またはこれでも行けるそうです。(試してない)
<{$sample|@var_dump}>
これで無事配列の中身がわかり、key名と入れ子構造がわかったので、目的の情報を出力できました!はーすっきり。