バージョン選択

フォーラム

メニュー

オンライン状況

45 人のユーザが現在オンラインです。 (37 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 45
もっと...

サイト内検索

質問 > フロント機能 > [2.4.2]商品の規格を増やした際の不具合

フロント機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
egreen-p
投稿日時: 2014/6/15 20:35
対応状況: −−−
新米
登録日: 2013/6/1
居住地:
投稿: 6
[2.4.2]商品の規格を増やした際の不具合
EC-CUBEバージョン:2.4.2
PHPバージョン:5.3.14
DBバージョン:MYSQL 5.5.25a

いつもお世話になっております。

以下のサイトを参考にして、商品の規格を3個以上に増やすカスタマイズを行いました。
http://hiroses.seesaa.net/article/187256821.html
http://d.hatena.ne.jp/nakatsuyasuhiro/20100320

具体的な仕様は、
・お客様が購入前に確認してもらう必須のプルダウンメニューの選択肢5つを、商品詳細ページのカゴに入れるボタンの上に表示。何も選択されていない場合は購入出来ない。
・購入した商品の選択肢5つは、受注管理画面および注文完了メールにて表示される。
・選択肢を表示させる商品は、管理画面の商品管理にて、チェックボックス一つで、一気に5個のプルダウンメニューの表示/非表示を切り替え出来る。

そこで、
●DBに質問の答えを入れるフィールド、表示切り替え用のフラグのフィールド、
5個の質問の予め決められた選択肢を登録したテーブルを5個登録。
●LC_Page_Product_Detail.php、product.tpl等商品詳細ページ周り、
LC_Page_Admin_Products_Product.php等管理画面周りのファイルにコードを追加。
を行いました。

結果的に、
・商品管理にてチェックを入れた商品は、商品詳細ページで5個のプルダウンメニューで選択肢が表示される。
・プルダウンメニューを何も選択しなかった場合は、エラーとなり選択を促す表示が出る。
・5つのプルダウンメニューを何かしら選択すれば、かごに入れ、購入することが出来る。
・その注文を商品管理画面で見ると選択した項目が確認できる。注文完了メールでも確認できる。
となり、理想通りにカスタマイズ出来たかのように思えたのですが、

・商品管理にてチェックを入れなかった商品は、当然5個のプルダウンメニューは表示されない。
・しかし、そのままカゴに入れるをクリックすると、買い物カゴ画面に遷移せず、買い物かごに入れることが出来ない。
という現象が起き、選択肢のない商品が購入できなくなってしまいました。

原因としては
「選択肢のない商品でも、何も選択されていないエラーチェックだけは発動してしまい、エラー表示こそ表示されていないがカゴに入れられない」
ということのような気がするのですが、
コードのどこをどう修正すればこの現象が解消されるのかが見当もつきません。

商品詳細ページ周りのコードの追加部分のみ抜粋しますので、おかしい点をご指摘、こうすれば解消されるというのをご指南いただけないでしょうか?


----------------------------------------------------------------------

■DB

dtb_order_detailに
フィールド「question1」「question2」「question3」「question4」「question5」を追加。

dtb_productsに
フィールド「add_flg」を追加。(※選択肢を表示するかどうかのフラグ)

テーブル
「mtb_question1」「mtb_question2」「mtb_question3」「mtb_question4」「mtb_question5」
を追加。(※5個のプルダウンの予め決められた選択肢を格納)



■data/smarty/templates/****/detail.tpl

<!--{if $arrProduct.add_flg == 1}-->
<dl>
 <dt>確認項目1</dt>
<dd><select name="question1" style="<!--{$arrErr.question1|sfGetErrorColor}-->">
<option value="">選択してください</option>
<!--{html_options options=$arrQuestion1 selected=$arrForm.question1.value}-->
</select>
<!--{if $arrErr.question1 != ""}-->
<br /><span class="attention"><!--{$arrErr.question1}--></span>
<!--{/if}-->
</dd>
 
  <dt>確認項目2</dt>
<dd><select name="question2" style="<!--{$arrErr.question2|sfGetErrorColor}-->">
<option value="">選択してください</option>
<!--{html_options options=$arrQuestion2 selected=$arrForm.question2.value}-->
</select>
<!--{if $arrErr.question2 != ""}-->
<br /><span class="attention"><!--{$arrErr.question2}--></span>
<!--{/if}-->
</dd>

  <dt>確認項目3</dt>
<dd><select name="question3" style="<!--{$arrErr.question3|sfGetErrorColor}-->">
<option value="">選択してください</option>
<!--{html_options options=$arrQuestion3 selected=$arrForm.question3.value}-->
</select>
<!--{if $arrErr.question3 != ""}-->
<br /><span class="attention"><!--{$arrErr.question3}--></span>
<!--{/if}-->
</dd>

  <dt>確認項目4</dt>
<dd><select name="question4" style="<!--{$arrErr.question4|sfGetErrorColor}-->">
<option value="">選択してください</option>
<!--{html_options options=$arrQuestion4 selected=$arrForm.question4.value}-->
</select>
<!--{if $arrErr.question4 != ""}-->
<br /><span class="attention"><!--{$arrErr.question4}--></span>
<!--{/if}-->
</dd>

  <dt>確認項目5</dt>
<dd><select name="question2" style="<!--{$arrErr.question5|sfGetErrorColor}-->">
<option value="">選択してください</option>
<!--{html_options options=$arrQuestion5 selected=$arrForm.question5.value}-->
</select>
<!--{if $arrErr.question5 != ""}-->
<br /><span class="attention"><!--{$arrErr.question5}--></span>
<!--{/if}-->
</dd>
</dl>
<!--{/if}-->



■data/class/pages/products/LC_Page_Product_Detail.php

function init() {

$this->arrQuestion1 = $masterData->getMasterData("mtb_question1");
$this->arrQuestion2 = $masterData->getMasterData("mtb_question2");
$this->arrQuestion3 = $masterData->getMasterData("mtb_question3");
$this->arrQuestion4 = $masterData->getMasterData("mtb_question4");
$this->arrQuestion5 = $masterData->getMasterData("mtb_question5");
}


function process() {
case 'cart':
$this->q1 = false;
$this->q2 = false;
$this->q3 = false;
$this->q4 = false;
$this->q5 = false;

if($this->arrCartProduct["add_flg"] == 1) {
$this->q1 = true;
$this->q2 = true;
$this->q3 = true;
$this->q4 = true;
$this->q5 = true;
}

$question1 = $this->arrQuestion1[$_POST['question1']];
$question2 = $this->arrQuestion2[$_POST['question2']];
$question3 = $this->arrQuestion3[$_POST['question3']];
$question4 = $this->arrQuestion4[$_POST['question4']];
$question5 = $this->arrQuestion5[$_POST['question5']];

    if(!$this->q1) {
$question1 = '0';
}
if(!$this->q2) {
$question2 = '0';
}
if(!$this->q3) {
$question3 = '0';
}
if(!$this->q4) {
$question4 = '0';
}
if(!$this->q5) {
$question5 = '0';
}

$objCartSess->addProduct(array($_POST['product_id'], $classcategory_id1, $classcategory_id2, $question1, $question2, $question3, $question4, $question5), $this->objFormParam->getValue('quantity'));



function lfInitParam() {

$this->objFormParam->addParam("確認項目1", "question1", STEXT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
$this->objFormParam->addParam("確認項目2", "question2", STEXT_LEN, "n", array("EXIST_CHECK","MAX_LENGTH_CHECK"));
$this->objFormParam->addParam("確認項目3", "question3", STEXT_LEN, "n", array("EXIST_CHECK","MAX_LENGTH_CHECK"));
$this->objFormParam->addParam("確認項目4", "question4", STEXT_LEN, "n", array("EXIST_CHECK","MAX_LENGTH_CHECK"));
$this->objFormParam->addParam("確認項目5", "question5", STEXT_LEN, "n", array("EXIST_CHECK","MAX_LENGTH_CHECK"));
}


function lfCheckError() {
if($this->q1) {
$objErr->doFunc(array("確認項目1", "question1"), array("EXIST_CHECK"));
}
if($this->q2) {
$objErr->doFunc(array("確認項目2", "question2"), array("EXIST_CHECK"));
}
if($this->q3) {
$objErr->doFunc(array("確認項目3", "question3"), array("EXIST_CHECK"));
}
if($this->q4) {
$objErr->doFunc(array("確認項目4", "question4"), array("EXIST_CHECK"));
}
if($this->q5) {
$objErr->doFunc(array("確認項目5", "question5"), array("EXIST_CHECK"));
}

return $objErr->arrErr;
}


■data/class/helper/SC_HelperDB.php

function sfTotalConfirm($arrData, &$objPage, &$objCartSess, $arrInfo, $objCustomer = "") {

$objPage->arrProductsDetails[$cnt]['question1'] = $arrCart[$i]['id'][3];
$objPage->arrProductsDetails[$cnt]['question2'] = $arrCart[$i]['id'][4];
$objPage->arrProductsDetails[$cnt]['question3'] = $arrCart[$i]['id'][5];
$objPage->arrProductsDetails[$cnt]['question4'] = $arrCart[$i]['id'][6];
$objPage->arrProductsDetails[$cnt]['question5'] = $arrCart[$i]['id'][7];



■data/class/db/dbfactory/SC_DB_DBfactory_MYSQL.php

function viewToSubQuery() {
の中に、
dtb_products.add_flg,
を追加。

return array(
"vw_products_nonclass" => '
の中に、
T1.add_flg
を追加。
フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
 » [2.4.2]商品の規格を増やした際の不具合 egreen-p 2014/6/15 20:35
     Re: [2.4.2]商品の規格を増やした際の不具合 hiraro 2014/6/16 22:15
       Re: [2.4.2]商品の規格を増やした際の不具合 egreen-p 2014/6/17 13:27

 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は90,363名です
総投稿数は110,374件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1693
8
red
1571
9
mcontact
1364
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.