エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


ECCUBEの問い合わせフォームに任意の値を引数として渡す方法

      2017/03/12

ECCUBEの問い合わせフォームに値を渡す方法の解説

 

問い合わせフォームに値を渡す

 
20150625_web_01
 
ECCUBEで、上記の画面のイメージのように、お問い合わせフォームに値を渡せるようにする方法を解説します。
 
この記事では商品一覧ページから商品情報を引数に問い合わせをする想定にしていますが、ボタンが設置できれば引き渡すものは商品情報に限らずなんでも OKです。
 
 
また、この記事は、ECCUBE 2.13.3で確認を行いました。
2.12系では試していませんが、大きく違わなさそうなので動くんじゃないかと思います。
 
 

テンプレートファイルの修正箇所

 

「お問い合わせへ」のボタンの設置

 
最初に「お問い合わせへ」のボタンを設置です。
 
最初の画像のように商品一覧の場合は下記のファイルになります。
/data/smarty/templates/default/products/list.tpl
 
ボタンを設置したい場所に下記のコードを追加します。
ただし、これを設置する場所は、商品情報のページなどに編集する場合は、商品情報の <form> …… </form>の間ではないところに編集する必要があります。

 
「mode=inquiry」の時に「shohin」に商品情報を入れて POSTするという処理になります。
5行目の「shohin」の valueの値には「商品名($arrProduct.name)」を編集する処理になっていますが、違う値を編集する場合はここを変更してください。
 
<form> …… </form>の間に編集したい場合は、JavaScriptで POSTする方法を採る必要があります。
 
 

入力フォームのテンプレートに表示の追加

 
お問い合わせフォームの入力テンプレートに、送られてきた情報を編集する箇所を追加します。
 
対象ファイルは下記のファイルになります。
/data/smarty/templates/default/contact/index.tpl
 
以下が送られてきた情報を表示させる箇所です。テキストを表示させたい場所に追加をします。
if文で送られてきた値があるときだけ表示を行います。

 
 
下記は、送られてきた情報を hiddenで保持するための設定です。
34行目あたりの「<input type=”hidden” name=”mode” value=”confirm” />」の次の行に編集するといいでしょう。

 
 

入力確認画面のテンプレートに表示の追加

 
お問い合わせフォームの入力確認ページに編集する箇所を追加します。
 
対象ファイルは下記のファイルになります。
/data/smarty/templates/default/contact/confirm.tpl
 
フォームの入力画面と同じく、テキストを表示させたい場所に追加をします。

 
 

確認メールのテンプレートに表示の追加

 
入力完了後に送信される確認メールのメールテンプレートにも情報を編集する箇所を追加します。
 
対象ファイルは下記のファイルになります。
/data/smarty/templates/default/mail_templates/contact_mail.tpl
 
入力画面と同じく、テキストを表示させたい場所に追加をします。

 
 


 

プログラムファイルの修正箇所

 

実際の処理をするプログラムの追加

 
最後に、実際に処理を行うプログラムファイルの変更を行います。
 
対象ファイルは下記のファイルになります。
/data/class/pages/contact/lc_page_contact.php
 
126行目あたりの「default:」の上あたりに編集をします。(82行目辺りにある「switch ($this->getMode()) {」の処理の分岐の一つとして、追加します。)
 

 
最初のボタンの追加のところで説明した、「mode=inquiry」の時に「shohin」に商品情報が送られてくるため、それを受け取る処理になります。
3行目の「$_POST」で送信されてきた情報を受け取りますが、入っているのは「shohin」のみにします。
 
 
続けて、155行目辺りに下記を追加します。(「function lfInitParam(&$objFormParam)」の中の 1項目として追加します。)

 
 
157行目辺りに下記を追加します。(「function lfInitParam(&$objFormParam)」の次の関数として追加をします。)

 
関数「lfInitParam2」として、商品情報が送られてきた状態でお問い合わせに来る場合の関数として想定していますので、「EXIST_CHECK」を入れていますが、ない場合も想定する場合は「EXIST_CHECK」は外してください。
155行目に追加する方の行には、商品に関連しないお問い合わせの場合もあるため「EXIST_CHECK」は入れていません。(この場合は、「case ‘inquiry’:」を通らず、「default」の処理の方を通ります。)
 
 
以上の対応で、お問い合わせフォームに情報を引数で渡して、確認メールにもその情報を送れるようになります。
 
思っていたよりは簡単に出来ましたね。

 - PHP・Smarty・ECCUBE

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

指定した数で文字列を丸める関数substr、mb_substr、mb_strimwidthの違い
指定した数で文字列を丸める(n文字目で…にする)関数substr、mb_substr、mb_strimwidthの違い

文字列を指定された数で抜き出すPHPの関数、substr、mb_substr、mb_strimwidthについての解説。似た関数だが引数の指定方法が違ったり、文字数がバイト数か文字数かも違ったり、注意が必要だ。

ECCUBEでカード決済NGの受注情報をマイページ購入履歴に表示しない方法解説

ECCUBEでカード決済に失敗しても購入履歴一覧に注文情報(受注情報)が表示される問題への対処方法を解説。受注情報レコードの作成の流れとステイタスについても解説。

複数銘柄を指定して株価チャートを一覧するツール公開

入力銘柄の5日間、3か月間、6か月間、1年間、2年間の株価チャートを一覧表示しますのでチャートで売買判断をするのに最適です。

ob_start、ob_get_contents関数でPHPの標準出力をバッファリング・変数に代入

標準出力をバッファリングし変数に代入することができるob_start()関数の解説。include()の処理をバッファリングすることで自由な場所に処理を記述することが可能。

ECCUBEでアップロードできない。upload_max_filesizeを設定する場所

テンプレートをアップロードする際に発生するエラー「テンプレートファイルがアップロードされていません」の対処方法。これはファイル容量の制限に引っかかっています。

ECCUBE2.13.3で商品規格の在庫数が無制限から変更できないバグがある

2.13.3固有のバグである商品規格の在庫数の入力エリアがアクティブにならない不具合を解消する解説です。product_class.tplの2行を修正するだけの簡単対応です。

ECCUBEを開発環境から本番ドメインに変更でエラーが・パス変更について

レンタルサーバでサーバ会社から割り当てられたURLで開発し、本番公開時にドメインを当てたらエラーが!そんな場合の対処方法の解説。対処方法は簡単ですが管理画面からは対応不可。

Smartyの修飾子regex_replaceで正規表現の後方参照・PHPではpreg_replace

ECCUBEで使われているSmartyで文字列を正規表現で置換し後方参照で値を利用する装飾子regex_replaceの解説です。細かな条件がありますので注意が必要です。

ECCUBEの注文完了画面注文番号と商品情報を編集するCRITEO(クリテオ)タグを編集

ECCUBEの注文完了画面にクリテオのタグを編集する方法を紹介。標準機能では完了画面に注文IDや購入商品の情報を渡さないため改修が必要です。

PHPのソースで見慣れない記号が出てきた・アロー演算子(->)、ダブルアロー演算子(=>)

PHPのプログラムソースには見慣れない記号が出てきます。その意味や調べ方です。