質問 > フロント機能 > [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 を追加。 |
フラット表示 | 前のトピック | 次のトピック |
題名 | 投稿者 | 日時 |
---|---|---|
» ![]() |
egreen-p | 2014/6/15 20:35 |
![]() |
hiraro | 2014/6/16 22:15 |
![]() |
egreen-p | 2014/6/17 13:27 |
![](images/pixel.gif)