14)この商品について問い合わせをする – hetemlのサーバでEC-CUBE(2.11.4)を使ってみる

2月 13th, 2012 カテゴリー EC-CUBE2.11

商品詳細画面に「この商品について問い合わせをする」ボタンを設置し、
ユーザーが問い合わせしやすいように、又サイト運営者が商品の照会をしやすいように
「商品名」、「商品コード」のデータを問い合わせ画面、自動返信メールに追加します。



機能要件

  • 商品詳細画面に「この商品について問い合わせをする」ボタンを設置。
  • 商品詳細画面から問い合わせ入力画面へのデータ送信は、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}-->&nbsp;&nbsp;(商品コード:<!--{$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}-->&nbsp;&nbsp;(商品コード:<!--{$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インストール~公開までの道のり

Sponsored Links

コメントする

Eメールアドレスは公開されません。