商品詳細画面に「この商品について問い合わせをする」ボタンを設置し、
ユーザーが問い合わせしやすいように、又サイト運営者が商品の照会をしやすいように
「商品名」、「商品コード」のデータを問い合わせ画面、自動返信メールに追加します。
機能要件
- 商品詳細画面に「この商品について問い合わせをする」ボタンを設置。
- 商品詳細画面から問い合わせ入力画面へのデータ送信は、POST送信。
- 送信データは「商品名」、「商品コード」
- 問い合わせ画面の項目に「お問い合わせ商品」を追加(入力、確認、自動返信メール)。
- 入力エラー、確認画面からの戻り値もセットする。
- 通常の問い合わせ時は、「お問い合わせ商品」項目非表示
テンプレートファイルをカスタマイズします
まずはテンプレートファイルから作業していきたいと思います。商品詳細
/data/Smarty/templates/originalPC/products/detail.tpl
<form name=”form1″ id=”form1″ method=”post” action=”?”>
~~~
~~~
~~~
</form>
の閉じタグのすぐ下に下記ソースを追記します。
<!--▼商品問い合わせ--> <form method="post" action="<!--{$smarty.const.HTTPS_URL}-->contact/<!--{$smarty.const.DIR_INDEX_PATH}-->"> <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" /> <input type="hidden" name="name" value="<!--{$arrProduct.name}-->" /> <input type="hidden" name="product_code" value="<!--{$arrProduct.product_code_min}-->" /> <!--<input type="submit" value="この商品について問い合わせをする">--> <button type="submit">この商品について問い合わせをする</button> </form> <!--▲商品問い合わせ-->※「hidden」で「$arrProduct.name」「$product_code_min」を「問い合わせ画面」にPOST送信します。
※「$transactionid」も「hidden」で送信している理由は、POST 送信の場合は自動的に
トランザクショントークンを検証する為、「$transactionid」も一緒に送信しないとエラー画面になってしまうからです。
お問い合わせ(入力ページ)
/data/Smarty/templates/originalPC/contact/index.tpl
「table」タグのすぐ下にif文を追記します。
<table summary="お問い合わせ"> //ここから <!--{if $arrContactCommodity && $arrContactCommodity != ''}--> <tr> <th>お問い合わせ商品</th> <td> <!--{$arrContactCommodity.name}--> (商品コード:<!--{$arrContactCommodity.product_code}-->) <input type="hidden" name="name" value="<!--{$arrContactCommodity.name}-->" /> <input type="hidden" name="product_code" value="<!--{$arrContactCommodity.product_code}-->" /> </td> </tr> <!--{/if}--> //ここまで
お問い合わせ(確認ページ)
/data/Smarty/templates/originalPC/contact/confirm.tpl
「colgroup」タグのすぐ下にif文を追記します。
<table summary="お問い合わせ内容確認"> <colgroup width="30%"></colgroup> <colgroup width="70%"></colgroup> //ここから <!--{if $arrForm.name.value && $arrForm.name.value != ''}--> <tr> <th>お問い合わせ商品</th> <td><!--{$arrForm.name.value|h}--> (商品コード:<!--{$arrForm.product_code.value|h}-->)</td> </tr> <!--{/if}--> //ここまで
お問い合わせメールテンプレート
/data/Smarty/templates/originalPC/mail_templates/contact_mail.tpl
「■お名前」の上にif文を追記します。
//ここから <!--{if $arrForm.name.value && $arrForm.name.value != ''}--> ■商品名 :<!--{$arrForm.name.value}--> (商品コード:<!--{$arrForm.product_code.value}-->) <!--{/if}--> //ここまで ■お名前 :<!--{$arrForm.name01.value}--> <!--{$arrForm.name02.value}--> (<!--{$arrForm.kana01.value}--> <!--{$arrForm.kana02.value}-->) 様
お問い合わせのclassファイルをカスタマイズします
/data/class/pages/contact/LC_Page_Contact.php
$_POSTのデータを「arrContactCommodity」にアサインします。
入力画面で「arrContactCommodity」の値を取得し、表示させます。
function action() { $objDb = new SC_Helper_DB_Ex(); $objFormParam = new SC_FormParam_Ex(); $this->arrData = isset($_SESSION['customer']) ? $_SESSION['customer'] : ""; //個別商品についての問い合わせ時、POSTのデータをアサインします (2012/2/13) if(isset($_POST['name']) && $_POST['name']!= ''){ $this->arrContactCommodity = $_POST; }
「addParam」に「name」と「product_code」を追加します。
function lfInitParam(&$objFormParam) { //ここから $objFormParam->addParam("商品名", "name", MTEXT_LEN, 'KVa', array("SPTAB_CHECK" ,"MAX_LENGTH_CHECK")); $objFormParam->addParam("商品コード", "product_code", MTEXT_LEN, 'KVa', array("SPTAB_CHECK" ,"MAX_LENGTH_CHECK")); //ここまで $objFormParam->addParam("お名前(姓)", 'name01', STEXT_LEN, 'KVa', array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK")); $objFormParam->addParam("お名前(名)", 'name02', STEXT_LEN, 'KVa', array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK")); $objFormParam->addParam("お名前(フリガナ・姓)", 'kana01', STEXT_LEN, 'KVCa', array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK", "KANA_CHECK")); $objFormParam->addParam("お名前(フリガナ・名)", 'kana02', STEXT_LEN, 'KVCa', array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK", "KANA_CHECK")); $objFormParam->addParam("郵便番号1", "zip01", ZIP01_LEN, 'n',array("SPTAB_CHECK" ,"NUM_CHECK", "NUM_COUNT_CHECK")); $objFormParam->addParam("郵便番号2", "zip02", ZIP02_LEN, 'n',array("SPTAB_CHECK" ,"NUM_CHECK", "NUM_COUNT_CHECK")); $objFormParam->addParam("都道府県", 'pref', INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK")); $objFormParam->addParam("住所1", "addr01", MTEXT_LEN, 'KVa', array("SPTAB_CHECK" ,"MAX_LENGTH_CHECK")); $objFormParam->addParam("住所2", "addr02", MTEXT_LEN, 'KVa', array("SPTAB_CHECK" ,"MAX_LENGTH_CHECK")); $objFormParam->addParam("お問い合わせ内容", 'contents', MLTEXT_LEN, 'KVa', array("EXIST_CHECK", "MAX_LENGTH_CHECK")); $objFormParam->addParam('メールアドレス', 'email', null, 'KVa',array("EXIST_CHECK", "EMAIL_CHECK", "EMAIL_CHAR_CHECK")); $objFormParam->addParam('メールアドレス(確認)', "email02", null, 'KVa',array("EXIST_CHECK", "EMAIL_CHECK", "EMAIL_CHAR_CHECK")); $objFormParam->addParam("お電話番号1", 'tel01', TEL_ITEM_LEN, 'n', array("NUM_CHECK", "MAX_LENGTH_CHECK")); $objFormParam->addParam("お電話番号2", 'tel02', TEL_ITEM_LEN, 'n', array("NUM_CHECK", "MAX_LENGTH_CHECK")); $objFormParam->addParam("お電話番号3", 'tel03', TEL_ITEM_LEN, 'n', array("NUM_CHECK", "MAX_LENGTH_CHECK")); }
以上で作業完了です!!
全てのファイルを反映させると、機能要件のように動作するはずです。
⇒15)新規でページを追加する(URL変更)-hetemlのサーバでEC-CUBE(2.11.4)を使ってみる
⇒hetemlのサーバでEC-CUBEインストール~公開までの道のり