バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 商品ページに「この商品について問い合わせをする」ボタンを設置したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ytanaka
投稿日時: 2016/7/6 14:34
対応状況: −−−
半人前
登録日: 2014/8/29
居住地: 東京
投稿: 23
商品ページに「この商品について問い合わせをする」ボタンを設置したい
------------------------------------------------------------------------------------------

[EC-CUBE] 2.13.0
[レンタルサーバ] さくらレンタルサーバ
[OS] FreeBSD 9.1-RELEASE
[PHP] PHP 5.4.45
[データベース] MySQL 5.5.38
[WEBサーバ] apache2.2.31
[ブラウザ] Google Chrome 51.0
[導入プラグインの有無] 無
[カスタマイズの有無] 無

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

商品ページに「この商品について問い合わせをする」ボタンを設置したいと思い、

http://sachips.byeto.jp/eccube/inquire-product.html

のサイトを参考に、コードを追加したのですが、
問い合わせ画面に商品情報が表示されず、困っております。
方法をご教授頂けると助かります。
何卒よろしくお願いいたします。

data/Smarty/templates/default/products/detail.tpl
の232行目に
▼この商品へお問い合わせ▼
<div id="contact_product">
<a href="<!--{$smarty.const.ROOT_URLPATH}-->contact/index.php?contact_product=<!--{$arrProduct.product_id|h}-->"><button type="button" class="btn btn-yellowgreen">この商品へのお問い合わせ</button></a>
</div>

を追加し、

data/class/pages/contact/LC_Page_Contact.php
の127行目に

                   // この商品へのお問い合わせ
                   $objQuery = SC_Query_Ex::getSingletonInstance();
                   $this->arrRet = array();
                   // パラメータ
                   $contact_product = $_GET['contact_product'];
                   // 商品情報を取得
                   if (isset($contact_product)) {
                       $arrRet = $objQuery->select("*", "dtb_products", "product_id = $contact_product");
                   }
                   // データベースからデータの取得ができたか
                   if (isset($arrRet)) {
                       $this->arrRet = $arrRet[0];
                   }

を、


    public function action()
    {
        $objFormParam = new SC_FormParam_Ex();

        $this->arrData = isset($_SESSION['customer']) ? $_SESSION['customer'] : '';

        switch ($this->getMode()) {
            case 'confirm':
                // エラーチェック
                $this->lfInitParam($objFormParam);
                $objFormParam->setParam($_POST);
                $objFormParam->convParam();
                $objFormParam->toLower('email');
                $objFormParam->toLower('email02');
                $this->arrErr = $this->lfCheckError($objFormParam);
                // 入力値の取得
                $this->arrForm = $objFormParam->getFormParamList();

                if (SC_Utils_Ex::isBlank($this->arrErr)) {
                    // エラー無しで完了画面
                    $this->tpl_mainpage = 'contact/confirm.tpl';
                    $this->tpl_title = 'お問い合わせ(確認ページ)';
                }

                break;

            case 'return':
                $this->lfInitParam($objFormParam);
                $objFormParam->setParam($_POST);
                $this->arrForm = $objFormParam->getFormParamList();

                break;

            case 'complete':
                $this->lfInitParam($objFormParam);
                $objFormParam->setParam($_POST);
                $this->arrErr = $objFormParam->checkError();
                $this->arrForm = $objFormParam->getFormParamList();
                if (SC_Utils_Ex::isBlank($this->arrErr)) {
                    $this->lfSendMail($this);

                    // 完了ページへ移動する
                    SC_Response_Ex::sendRedirect('complete.php');
                    SC_Response_Ex::actionExit();
                } else {
                    SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
                    SC_Response_Ex::actionExit();
                }
                break;

                   // この商品へのお問い合わせ
                   $objQuery = SC_Query_Ex::getSingletonInstance();
                   $this->arrRet = array();
                   // パラメータ
                   $contact_product = $_GET['contact_product'];
                   // 商品情報を取得
                   if (isset($contact_product)) {
                       $arrRet = $objQuery->select("*", "dtb_products", "product_id = $contact_product");
                   }
                   // データベースからデータの取得ができたか
                   if (isset($arrRet)) {
                       $this->arrRet = $arrRet[0];
                   }

            default:
                break;
        }

    }

のように追加し、
data/Smarty/templates/default/contact/index.tpl

<!--{if $arrRet}-->
<div class="contact_product clearfix">
    <img src="<!--{$smarty.const.IMAGE_SAVE_URLPATH|sfTrimURL}-->/<!--{$arrRet.main_list_image|sfNoImageMainList|h}-->" alt="<!--{$arrRet.name|h}-->">
    <h3>「<!--{$arrRet.name|h}-->」へのお問い合わせ</h3>
</div>
<!--{/if}-->



<textarea name="contents" class="box380" cols="60" rows="20" style="<!--{$arrErr.contents.value|h|sfGetErrorColor}-->; ime-mode: active;"><!--{if $arrRet}-->「商品名:<!--{$arrRet.name|h}-->」について<!--{/if}-->
    <!--{"\n"}--><!--{$arrForm.contents.value|h}-->
</textarea>

を、

<div id="undercolumn">
    <h2 class="title"><!--{$tpl_title|h}--></h2>
<!--{if $arrRet}-->
<div class="contact_product clearfix">
    <img src="<!--{$smarty.const.IMAGE_SAVE_URLPATH|sfTrimURL}-->/<!--{$arrRet.main_list_image|sfNoImageMainList|h}-->" alt="<!--{$arrRet.name|h}-->">
    <h3>「<!--{$arrRet.name|h}-->」へのお問い合わせ</h3>
</div>
<!--{/if}-->

    <div id="undercolumn_contact">

        <form name="form1" method="post" action="?">
        <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />
        <input type="hidden" name="mode" value="confirm" />

        <table summary="お問い合わせ">
            <tr>
                <th>お名前<span class="attention">※</span></th>
                <td>
                    <span class="attention"><!--{$arrErr.name01}--><!--{$arrErr.name02}--></span>
                    姓&nbsp;<input type="text" class="box120" name="name01" value="<!--{$arrForm.name01.value|default:$arrData.name01|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{$arrErr.name01|sfGetErrorColor}-->; ime-mode: active;" /> 
                    名&nbsp;<input type="text" class="box120" name="name02" value="<!--{$arrForm.name02.value|default:$arrData.name02|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{$arrErr.name02|sfGetErrorColor}-->; ime-mode: active;" />
                </td>
            </tr>
            <tr>
                <th>お名前(フリガナ)<span class="attention">※</span></th>
                <td>
                    <span class="attention"><!--{$arrErr.kana01}--><!--{$arrErr.kana02}--></span>
                    セイ&nbsp;<input type="text" class="box120" name="kana01" value="<!--{$arrForm.kana01.value|default:$arrData.kana01|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{$arrErr.kana01|sfGetErrorColor}-->; ime-mode: active;" /> 
                    メイ&nbsp;<input type="text" class="box120" name="kana02" value="<!--{$arrForm.kana02.value|default:$arrData.kana02|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{$arrErr.kana02|sfGetErrorColor}-->; ime-mode: active;" />
                </td>
            </tr>
            <tr>
                <th>郵便番号</th>
                <td>
                    <span class="attention"><!--{$arrErr.zip01}--><!--{$arrErr.zip02}--></span>
                    <p class="top">
                        〒&nbsp;
                        <input type="text" name="zip01" class="box60" value="<!--{$arrForm.zip01.value|default:$arrData.zip01|h}-->" maxlength="<!--{$smarty.const.ZIP01_LEN}-->" style="<!--{$arrErr.zip01|sfGetErrorColor}-->; ime-mode: disabled;" />&nbsp;-&nbsp;
                        <input type="text" name="zip02" class="box60" value="<!--{$arrForm.zip02.value|default:$arrData.zip02|h}-->" maxlength="<!--{$smarty.const.ZIP02_LEN}-->" style="<!--{$arrErr.zip02|sfGetErrorColor}-->; ime-mode: disabled;" /> 
                        <a href="http://search.post.japanpost.jp/zipcode/" target="_blank"><span class="mini">郵便番号検索</span></a>
                    </p>
                    <p class="zipimg">
                        <a href="java script:fnCallAddress('<!--{$smarty.const.INPUT_ZIP_URLPATH}-->', 'zip01', 'zip02', 'pref', 'addr01');">
                            <img src="<!--{$TPL_URLPATH}-->img/button/btn_address_input.gif" alt="住所自動入力" /></a>
                        <span class="mini">&nbsp;郵便番号を入力後、クリックしてください。</span>
                    </p>
                </td>
            </tr>
            <tr>
                <th>住所</th>
                <td>
                    <span class="attention"><!--{$arrErr.pref}--><!--{$arrErr.addr01}--><!--{$arrErr.addr02}--></span>

                    <select name="pref" style="<!--{$arrErr.pref|sfGetErrorColor}-->">
                    <option value="">都道府県を選択</option><!--{html_options options=$arrPref selected=$arrForm.pref.value|default:$arrData.pref|h}--></select>

                    <p>
                        <input type="text" class="box380" name="addr01" value="<!--{$arrForm.addr01.value|default:$arrData.addr01|h}-->" style="<!--{$arrErr.addr01|sfGetErrorColor}-->; ime-mode: active;" /><br />
                        <!--{$smarty.const.SAMPLE_ADDRESS1}-->
                    </p>

                    <p>
                        <input type="text" class="box380" name="addr02" value="<!--{$arrForm.addr02.value|default:$arrData.addr02|h}-->" style="<!--{$arrErr.addr02|sfGetErrorColor}-->; ime-mode: active;" /><br />
                        <!--{$smarty.const.SAMPLE_ADDRESS2}-->
                    </p>

                    <p class="mini"><span class="attention">住所は2つに分けてご記入ください。マンション名は必ず記入してください。</span></p>
                </td>
            </tr>
            <tr>
                <th>電話番号</th>
                <td>
                    <span class="attention"><!--{$arrErr.tel01}--><!--{$arrErr.tel02}--><!--{$arrErr.tel03}--></span>
                    <input type="text" class="box60" name="tel01" value="<!--{$arrForm.tel01.value|default:$arrData.tel01|h}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" style="<!--{$arrErr.tel01|sfGetErrorColor}-->; ime-mode: disabled;" />&nbsp;-&nbsp;
                    <input type="text" class="box60" name="tel02" value="<!--{$arrForm.tel02.value|default:$arrData.tel02|h}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" style="<!--{$arrErr.tel02|sfGetErrorColor}-->; ime-mode: disabled;" />&nbsp;-&nbsp;
                    <input type="text" class="box60" name="tel03" value="<!--{$arrForm.tel03.value|default:$arrData.tel03|h}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" style="<!--{$arrErr.tel03|sfGetErrorColor}-->; ime-mode: disabled;" />
                </td>
            </tr>
            <tr>
                <th>メールアドレス<span class="attention">※</span></th>
                <td>
                    <span class="attention"><!--{$arrErr.email}--><!--{$arrErr.email02}--></span>
                    <input type="text" class="box380 top" name="email" value="<!--{$arrForm.email.value|default:$arrData.email|h}-->" style="<!--{$arrErr.email|sfGetErrorColor}-->; ime-mode: disabled;" /><br />
                    <!--{* ログインしていれば入力済みにする *}-->
                    <!--{if $smarty.server.REQUEST_METHOD != 'POST' && $smarty.session.customer}-->
                    <!--{assign var=email02 value=$arrData.email}-->
                    <!--{/if}-->
                    <input type="text" class="box380" name="email02" value="<!--{$arrForm.email02.value|default:$email02|h}-->" style="<!--{$arrErr.email02|sfGetErrorColor}-->; ime-mode: disabled;" /><br />
                    <p class="mini"><span class="attention">確認のため2度入力してください。</span></p>
                </td>
            </tr>
            <tr>
                <th>お問い合わせ内容<span class="attention">※</span><br />
                <span class="mini">(全角<!--{$smarty.const.MLTEXT_LEN}-->字以下)</span></th>
                <td>
                    <span class="attention"><!--{$arrErr.contents}--></span>
                    <textarea name="contents" class="box380" cols="60" rows="20" style="<!--{$arrErr.contents.value|h|sfGetErrorColor}-->; ime-mode: active;"><!--{if $arrRet}-->「商品名:<!--{$arrRet.name|h}-->」について<!--{/if}-->
    <!--{"\n"}--><!--{$arrForm.contents.value|h}-->
</textarea>
                </td>
            </tr>
        </table>

        <div class="btn_area">
            <ul>
                <li>
                    <input type="image" src="<!--{$TPL_URLPATH}-->img/button/btn_confirm.gif" alt="確認ページへ" name="confirm" />
                </li>
            </ul>
        </div>

        </form>
    </div>
</div>

と記載しております。

何卒よろしくお願いいたします。



DELIGHT
投稿日時: 2016/7/6 15:06
対応状況: −−−
仙人
登録日: 2010/2/3
居住地: 熊本県・九州・長野県・関東甲信越
投稿: 571
Re: 商品ページに「この商品について問い合わせをする」ボタンを設置したい
全て詳細には見ていませんが、switch文がおかしいことになっています。

それとSQLインジェクションの脆弱性があります。
contact.php?product_id=(【SQL文】)とかでアクセスしたら実行できてしまうのではないでしょうか。

送信されたパラメータをSQLに使用する場合は必ずプレースホルダを使って下さい。

$arrRet = $objQuery->select("*", "dtb_products", "product_id = ?", array($contact_product));


----------------
+ DAISY inc. -------------------- +
EC-CUBE構築・カスタマイズサービス
EC・WEB構築などお気軽にご相談ください。

デイジー株式会社
http://daisy.link/

ytanaka
投稿日時: 2019/11/7 17:58
対応状況: −−−
半人前
登録日: 2014/8/29
居住地: 東京
投稿: 23
Re: 商品ページに「この商品について問い合わせをする」ボタンを設置したい
ご返信が大変遅くなってしまい、申し訳ありません。

ありがとうございました。

だいぶ時間が経っていますが、無事に解決することができました。

本当にありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

ec-cube.co

統計情報

総メンバー数は52,673名です
総投稿数は93,854件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
2010
4
468
1873
5
yuh
1610
6
umebius
1363
7
red
1359
8
h_tanaka
933
9
fukap
907
10
tsuji
856
11
shutta
835
12 ramrun 789
13
tao_s
780
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 437


ネットショップの壺

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

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