「EC-CUBEカスタマイズ!パラメータ設定にパラメータを追加する」では、EC-CUBE2.13をカスタマイズしてパラメータ設定画面のパラメータを追加する方法を説明します。
EC-CUBEでの定数管理は、管理画面で「システム設定」-「パラメータ設定」で行えます。
ここに設定すると、定数としてコード内部で使用できるようになります。
EC-CUBEでのパラメータ設定にパラメータを追加する方法を解説します。
DBにレコードを追加
「mtb_constants」テーブルにレコードを追加します。(※画面はphpPgAdminです)
① id : 定数名
② name : 定数の値、後で変更可能なので適当に設定します
③ rank : 表示順、パラメータ設定画面での表示順です、2000以上を付けておけば元の設定とはかぶらないと思います
④ remarks : 説明書き、パラメータ設定画面で入力フォームの上に表示されます
例として、「USER_LEVEL_VIP」という定数を作り、値を「9」に設定します。
パラメータ設定画面で更新
実は「mtb_constants」テーブルに追加しただけでは使用できません。
定数として実際にphpファイルに登録されているのは、 data/cache/mtb_constants.php になるのですが、ここにまだ書き込まれていないため、使用できないのです。
管理画面で「システム設定」-「パラメータ設定」を開くと一番下に追加したものが表示されるはずです。
表示されたことを確認して、「この内容で登録する」をクリックしてください。
これで、mtb_constants.php が更新されます。
一番下にない場合、rank で設定した表示順の数値よりも大きいものが既に設定されいた可能性があります。
少し上の方をにありませんか?
探しても見当たらない場合、「mtb_constants」テーブルにレコードが追加されているかを確認してみてください。
PHPで使用する場合
追加した定数をPHPで使用する場合、通常の定数のように使用します。
if( $userLevel == USER_LEVEL_VIP ) { 処理 }
テンプレートで使用する場合
テンプレートファイル内で使用する場合、こちらもテンプレート内で使用している通常の定数のように使用します。
<!--{if $userLevel == $smarty.const.USER_LEVEL_VIP}--> 処理 <!--{/if}-->
使用できない場合
パラメータ設定画面で「この内容で登録する」をクリックして登録していますか?
ここで登録をしないと、mtb_constants.php ファイルに書き込まれませんので使用できません。
クリックしているのに使用できない場合、mtb_constants.php ファイルをエディタで開いてみてください。
追加した定数の記述がありますか?
無い場合、パラメータ設定画面で「この内容で登録する」をクリックした際に更新されていません。
サーバの設定で、サーバキャッシュを有効にしている環境ではこのような状況が起こりえます。
その場合、キャッシュの有効期限が切れて更新されるのを待つか、mtb_constants.php ファイルに下記のようにして追記してしまってください。
define('USER_LEVEL_VIP', 9);
まとめ
いかがでしたか、やはりPHPファイル上などに直接値を記述するのは出来ることなら避けたいことです。
この方法で定数を作ることで直接値を書くようなことはなくなりますね。
コメントを残す