質問編集履歴
1
問題となる部分が変わったことによる内容の修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ec-cube2.12.6 のカスタマイズによる
|
1
|
+
ec-cube2.12.6 のカスタマイズによる規格の追加について
|
test
CHANGED
@@ -2,154 +2,144 @@
|
|
2
2
|
|
3
3
|
EC-Cube 2.12.6 にて商品に延長保証の項目を追加しております。
|
4
4
|
|
5
|
+
(PHP: 5.3.3, MySQL:5.1.73)
|
5
6
|
|
6
7
|
|
8
|
+
|
7
|
-
|
9
|
+
追加する項目(延長保証)については商品規格の一つとして扱いたいと考えております。
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
それに伴い、商品一覧ページ(list.tpl)および商品詳細ページ(detail.tpl)にて
|
14
|
+
|
15
|
+
ラジオボタンを表示し、「選択可能な延長保証年数」を確認できるようにしたいです。
|
8
16
|
|
9
17
|
|
10
18
|
|
11
19
|
例)
|
12
20
|
|
21
|
+
dtb_product_class
|
22
|
+
|
13
|
-
|商品ID|名前|ステータス|
|
23
|
+
|商品ID|商品ID|名前|ステータス|規格カテゴリID1|
|
24
|
+
|
25
|
+
|:--:|:--:|:--:|:--:|:--:|
|
26
|
+
|
27
|
+
|1|1|name|status|X|
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
dtb_classcategory
|
32
|
+
|
33
|
+
|規格カテゴリID|規格名|規格ID|
|
34
|
+
|
35
|
+
|:--:|:--:|--:|
|
36
|
+
|
37
|
+
|6|3年|X|
|
38
|
+
|
39
|
+
|7|5年|X|
|
40
|
+
|
41
|
+
|8|6年|X|
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
また、商品の金額に応じて同じ保証でも値段が変わる場合や
|
46
|
+
|
47
|
+
保証料金が商品の金額に左右されず一律となる場合もあるため、
|
48
|
+
|
49
|
+
新たに以下のようなテーブルを追加しています。
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
例)
|
54
|
+
|
55
|
+
dtb_warranty
|
56
|
+
|
57
|
+
|商品ID|規格カテゴリID|保証料金|保証料率(%)|
|
14
58
|
|
15
59
|
|:--:|:--:|:--:|:--:|
|
16
60
|
|
17
|
-
|1|
|
61
|
+
|1|6||5|
|
18
62
|
|
19
|
-
|
20
|
-
|
21
|
-
新規レコードに配列の要素として追加する値は、
|
22
|
-
|
23
|
-
新たに追加するテーブルの主キーとしたいです。
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
以下のURLなどを参考にしながら追加を行なっていたのですが、躓いてしまったので
|
28
|
-
|
29
|
-
詳しい方がいらっしゃれば諸々お伺いしたく。
|
30
|
-
|
31
|
-
https://ecnomikata.com/column/8959/
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
現状:
|
36
|
-
|
37
|
-
商品登録画面(product.tpl)
|
38
|
-
|
39
|
-
登録情報確認画面(confirm.tpl)
|
40
|
-
|
41
|
-
では正常に項目の追加が確認できております。
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
参考①
|
46
|
-
|
47
|
-
![イメージ説明](1a7e4024de25bab9b6527ad8324d8111.png)
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
63
|
+
|1|7|1,500||
|
52
|
-
|
53
|
-
![5年及び7年を選択した場合](2b57e8dcdec392439a382cb35df22bbc.png)
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
上記の状態で[この内容で登録する]を押下した場合、画面上は
|
58
|
-
|
59
|
-
「登録が完了致しました。」と表示されるのですが
|
60
|
-
|
61
|
-
phpmyadmin経由でMySQLの該当レコードを確認すると、「0」となっております。
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
改修したソースは以下となります。(...は略を表します)
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
data/class/pages/admin/products/LC_Page_Admin_Products_Product.php
|
70
|
-
|
71
|
-
```PHP
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
function lfInitFormParam(&$objFormParam, $arrPost) {
|
76
|
-
|
77
|
-
...
|
78
|
-
|
79
|
-
$objFormParam->addParam('延長保証期間', 'warranty_period_id', STEXT_LEN, 'n', array('MAX_LENGTH_CHECK'));
|
80
|
-
|
81
|
-
...
|
82
|
-
|
83
|
-
}
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
function lfRegistProduct(&$objUpFile, &$objDownFile, $arrList) {
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
$objQuery =& SC_Query_Ex::getSingletonInstance();
|
92
|
-
|
93
|
-
$objDb = new SC_Helper_DB_Ex();
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
// 配列の添字を定義
|
98
|
-
|
99
|
-
$checkArray = array('name', 'status',
|
100
|
-
|
101
|
-
...
|
102
|
-
|
103
|
-
'sale_limit', 'deliv_date_id', 'maker_id', 'note',
|
104
|
-
|
105
|
-
//追加項目(延長保証情報)
|
106
|
-
|
107
|
-
'warranty_period_id' );
|
108
|
-
|
109
|
-
$arrList = SC_Utils_Ex::arrayDefineIndexes($arrList, $checkArray);
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
// INSERTする値を作成する。
|
114
|
-
|
115
|
-
...
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
// 追加項目(保証期間)
|
120
|
-
|
121
|
-
$sqlval['warranty_period_id'] = $arrList['warranty_period_id'];
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
$arrRet = $objUpFile->getDBFileList();
|
126
|
-
|
127
|
-
$sqlval = array_merge($sqlval, $arrRet);
|
128
|
-
|
129
|
-
...
|
130
|
-
|
131
|
-
}
|
132
64
|
|
133
65
|
|
134
66
|
|
135
67
|
|
136
68
|
|
137
|
-
|
69
|
+
商品一覧ページ及び商品詳細ページでは、ラジオボタンにより延長保証の項目を表示し、
|
138
70
|
|
139
|
-
登録情報確認画面(confirm.tpl)からPOSTすると実際にDBへ登録する処理が走ると思うのですが、
|
140
|
-
|
141
|
-
|
71
|
+
ラベルとして保証料金を(場合によっては計算して)表示したいと思っております。
|
142
72
|
|
143
73
|
|
144
74
|
|
145
|
-
|
75
|
+
上記を踏まえ、以下のようにテンプレート側を変更しました。
|
146
76
|
|
147
77
|
|
148
78
|
|
149
|
-
|
79
|
+
①list.tpl
|
150
80
|
|
81
|
+
```smarty
|
82
|
+
|
83
|
+
<!--▼規格1-->
|
84
|
+
|
85
|
+
<h2>延長保証</h2>
|
86
|
+
|
87
|
+
<dt><!--{$tpl_class_name1[$id]|h}-->:</dt>
|
88
|
+
|
89
|
+
<dd>
|
90
|
+
|
91
|
+
<!--{foreach from=$arrProductClass item="kikaku"}-->
|
92
|
+
|
93
|
+
<!--{html_radios options=$kikaku.classcategory_id1 selected=$arrProduct.classcategory_id1}-->
|
94
|
+
|
95
|
+
<!--{if $arrErr.classcategory_id1 != ""}-->
|
96
|
+
|
97
|
+
<p class="attention">※ <!--{$tpl_class_name1[$id]}-->を入力して下さい。</p>
|
98
|
+
|
151
|
-
|
99
|
+
<!--{/if}-->
|
100
|
+
|
101
|
+
<!--{/foreach}-->
|
102
|
+
|
103
|
+
</dd>
|
104
|
+
|
105
|
+
<!--▲規格1-->
|
106
|
+
|
107
|
+
```
|
152
108
|
|
153
109
|
|
154
110
|
|
111
|
+
②detail.tpl
|
112
|
+
|
113
|
+
```smarty
|
114
|
+
|
115
|
+
<!--▼規格1-->
|
116
|
+
|
117
|
+
<h2>延長保証</h2>
|
118
|
+
|
119
|
+
<!--{foreach from=$arrProductsClass item="kikaku1" key="key"}-->
|
120
|
+
|
121
|
+
<label/><input type="radio" name="classcategory_id1" value="<!--{$kikaku1.classcategory_id1}-->" /><!--{$kikaku1.classcategory_name1}--></label>
|
122
|
+
|
123
|
+
<!--{$kikaku1.price02}-->円
|
124
|
+
|
125
|
+
<!--{/foreach}-->
|
126
|
+
|
127
|
+
<!--▲規格1-->
|
128
|
+
|
129
|
+
```
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
しかし、下図のように現状ではラジオボタンが表示されない状態となっております。
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
![イメージ説明](a47ffaf37b5e9560895b515934cf7b86.png)
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
上記問題の解決にご協力いただけないでしょうか。
|
142
|
+
|
143
|
+
|
144
|
+
|
155
|
-
|
145
|
+
よろしくお願いします。
|