日別アーカイブ: 2011 . 11 / 16

ECCUBE 2.11 支払い方法に説明文を追加

代引きの手数料など一つ一つの支払い方法に説明文を入れたかったのでカスタマイズのメモ

データベーステーブルdtb_paymentにはmemo01とか02とか使われていないらしいカラムがあったのでそれを使うことにする。

1:管理画面のテンプレートを編集
data/Smarty/templates/admin/basis/payment_input.tpl
テーブルの行をひとつ追加
[html]
<tr>
<th>説明</th>
<!–{assign var=key value=”memo01″}–>
<td><textarea name=”<!–{$key}–>” cols=”60″ rows=”5″><!–{$arrForm[$key].value}–></textarea></td>
</tr>
[/html]

2:対象クラスを拡張
data/class_extends/pages/admin/basis/LC_Page_Admin_Basis_PaymentInput_Ex.php
フォームの内容を追加するためlfInitParamをオーバーライド
[PHP]function lfInitParam($mode, &$objFormParam) {
parent::lfInitParam($mode,$objFormParam);
$objFormParam->addParam(“説明”, “memo01”, STEXT_LEN, ‘KVa’, array(“SPTAB_CHECK”, “MAX_LENGTH_CHECK”));
}[/PHP]

3:公開側のテンプレートを編集
data/Smarty/templates/default/shopping/payment.tmpl
[html]
<!–{section name=cnt loop=$arrPayment}–>
<!–{$arrPayment[cnt].payment_memo01|h}–>
<!–{/section}–>
[/html]
※section ってよくわからないな。。foreachにしたい。。

4:データベースから値を持ってくるようにHelper_Purchase_Exクラスを編集
data/class_extends/helper_extends/SC_Helper_Purchase_Ex.php
getPaymentsByPriceをオーバーライドし、クエリにmemo01も入れるようにする
[php]
function getPaymentsByPrice($total,$deliv_id){
//省略
$payments = $objQuery->select(“payment_id, payment_method, rule, upper_rule, note, payment_image, charge, memo01”, “dtb_payment”, $where, $arrPaymentIds);
//省略
}[/php]