ショッピングカートEC-CUBEの商品単価に単位をつける

EC-CUBEのお仕事は滅多にないのですが
カスタマイズの案件があったのでメモしておきます。

設置済みのEC-CUBE バージョンは2.4.4でした。

なお、設置から担当してた訳でもなく、
既にカスタマイズされているなどあっても
EC-CUBE初心者の僕では見分けがついてないので
標準では違うけどってあるかもですが、ご了承下さい。

商品の単価に単位をつける

やりたいことは、商品の単位に「箱」や「袋」などを選択させて表示すること。

1.マスタデータ登録

まず、単位を登録するマスタデータを作成します。
データーベースに単位用テーブル「mtb_package」を作成。

型は最小にしておきました。

商品テーブルに単位の保存フィールドを追加
dtb_products

んー・・
実はあまり自信が無い。
いつもphpmyadminからGUIで操作しちゃっています。

データーベース手動操作はここまで。
phpmyadminを開いていたら閉じちゃいましょう。

続いて、EC-CUBEのコンパネから
単位データを登録していきます。

マスタデータ追加

システム設定→マスタデータ管理
セレクトボックスから「mtb_package」を選択して、項目を追加していきます。

まとめて設定はできないみたいです。
一回ずつ選択ボタンを押して登録していきます。

2.admin 商品登録画面

MySQL固有の処理をするクラス

/data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php
クラス名:SC_DB_DBFactory_MYSQL

以下にdtb_products.mtb_package,T1.mtb_package,の二箇所に追加
・・T1ってなんの別名だろう?よくわからないがそー書いてあったのでそれにならった。

商品登録のページクラスにDB読み込みを追加

/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php
クラス名:LC_Page_Admin_Products_Product

これでDBから登録情報を拾ってassignしてくれる。

入力用バリデート

何をやってるかよくわからないが
前後を見た感じでなんとなく似たように設定。
たぶん違うんだろうな・・(汗)

保存用フィールドの設定

テンプレートファイル

登録画面用

/data/Smarty/templates/default/admin/products/product.tpl

表示させたい場所に上記を挿入。
html_optionsタグってなんか使い方が違うような・・。EC-CUBEオリジナルでしょうか。

確認画面

/data/Smarty/templates/default/admin/products/product.tpl

表示させたい場所に上記を挿入。

3.フロント画面

データベース読み込みクラスを変更

商品一覧 のページクラス

普通ならこっち
/data/class/pages/products/LC_Page_Products_List.php
クラス名:LC_Page_Products_List

カスタマイズしている場合はこっち
/data/class_extends/page_extends/products/LC_Page_Products_List_Ex.php
クラス名:LC_Page_Products_List_Ex

商品詳細 のページクラス

普通ならこっち
/data/class/pages/products/LC_Page_Products_Detail.php
クラス名:LC_Page_Products_Detail

カスタマイズしている場合はこっち
/data/class_extends/page_extends/products/LC_Page_Products_Detail_Ex.php
クラス名:LC_Page_Products_Detail_Ex

テンプレート

普通ならここらへんのファイルだと思うのだが
data/Smarty/templates/default/

カスタマイズ用フォルダを参照してるっぽかったのでこっち

一覧ページ

/user_data/packages/default/list.tpl

むー・・
配列から配列参照できればよかったのだが
うまく書けなかったので一旦assignしてから代入

詳細ページ

/user_data/packages/default/detal.tpl

これで一通りの作業が完了です。
おつかれ!

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL