EC-Cube2.13.xは問い合わせフォームが一つしか実装されていない。
もう一つフォームを実装する場合の方法。
例えば、「/contact_sample」にフォームを追加する場合。
問い合わせページテンプレートを複製
「/data/smarty/templates/[テンプレート名]/contact」フォルダを中身ごと
「/data/smarty/templates/[テンプレート名]/contact_sample」に複製
テンプレートの中身を適宜修正しておく。
注)利用するテンプレートそれぞれに行うこと
問い合わせメールテンプレートを複製
「/data/smarty/templates/[テンプレート名]/mail_templates/contact_mail.tpl」を
「/data/smarty/templates/[テンプレート名]/mail_templates/contact_sample_mail.tpl」に複製
ファイルの中身を適宜修正しておく。
注)利用するテンプレートそれぞれに行うこと
メールテンプレートを登録する
管理画面のメニュー「システム設定」から「マスターデータ管理」画面へ
![](http://mainsrv.creatorlab.jp/wp-content/uploads/2019/07/eccube123-1-300x112.png)
「mtb_mail_template」を選択
![](http://mainsrv.creatorlab.jp/wp-content/uploads/2019/07/aac32bf47b7703c82be9ef195c191e1b-300x75.png)
テンプレート名を追加する
![](http://mainsrv.creatorlab.jp/wp-content/uploads/2019/07/eccube123-3-300x107.png)
「mtb_mail_tpl_path」を選択
![](http://mainsrv.creatorlab.jp/wp-content/uploads/2019/07/eccube123-4-300x80.png)
テンプレートのパスを登録
![](http://mainsrv.creatorlab.jp/wp-content/uploads/2019/07/eccube123-5-300x97.png)
パスは複製したファイル「mail_templates/contact_sample_mail.tpl」を設定。
IDは最後に追加する番号でOK。
ただし、「mtb_mail_template」と「mtb_mail_tpl_path」のIDは揃えること!
今回は「6」に設定。
問い合わせ関連クラスを複製
「/data/class_extends/page_extends/contact」フォルダを中身ごと、
「/data/class_extends/page_extends/contact_sample」に複製
中のファイルをリネーム
LC_Page_Contact_Ex.php → LC_Page_Contact_Sample_Ex.php
LC_Page_Contact_Complete_Ex.php → LC_Page_Contact_Sample_Complete_Ex.php
それぞれのクラス名を変更
class LC_Page_Contact_Sample_Ex extends LC_Page_Contact { ・・・
class LC_Page_Contact_Sample_Complete_Ex extends LC_Page_Contact_Complete { ・・・
送信メールの「template_id」を修正
「/data/class/page/contact_sample/LC_Page_Contact_Ex.php」の「lfSendMail関数」をオーバーライドして、template_idを変更する。
/** * メールの送信を行う。 * * @param LC_Page_Contact $objPage * @return void */ public function lfSendMail(&$objPage) { $CONF = SC_Helper_DB_Ex::sfGetBasisData(); $objPage->tpl_shopname = $CONF['shop_name']; $objPage->tpl_infoemail = $CONF['email02']; $helperMail = new SC_Helper_Mail_Ex(); $helperMail->setPage($this); $helperMail->sfSendTemplateMail( $objPage->arrForm['email']['value'], // to $objPage->arrForm['name01']['value'] .' 様', // to_name 6, // template_id $objPage, // objPage $CONF['email03'], // from_address $CONF['shop_name'], // from_name $CONF['email02'], // reply_to $CONF['email02'] // bcc ); }
注)template_idは各々の環境に合わせること
「/html/contact」フォルダを複製
「/html/contact」フォルダを中身ごと、
「/html/contact_sample」に複製
中のファイルを修正
require_once '../require.php'; require_once CLASS_EX_REALDIR . 'page_extends/contact_sample/LC_Page_Contact_Sample_Ex.php'; $objPage = new LC_Page_Contact_Sample_Ex(); $objPage->init(); $objPage->process();
require_once '../require.php'; require_once CLASS_EX_REALDIR . 'page_extends/contact_sample/LC_Page_Contact_Sample_Complete_Ex.php'; $objPage = new LC_Page_Contact_Sample_Complete_Ex(); $objPage->init(); $objPage->process();
ページをデータベースに登録する
「dtb_pagelayout」に入力ページと完了ページの登録する。
page_idはデータベースを確認して、同じdevice_type_idの中で最大のpage_id+1を設定する。
直接SQL文を叩くのであればこんな感じ。
INSERT INTO `dtb_pagelayout` (`device_type_id`, `page_id`, `page_name`, `url`, `filename`, `header_chk`, `footer_chk`, `edit_flg`, `author`, `description`, `keyword`, `update_url`, `create_date`, `update_date`, `meta_robots`) VALUES ( 10, /* PC用テンプレート */ 29, /* データベースを確認して最大+1を設定すること */ 'お問い合わせ-sample(入力ページ)', /* ページ名 */ 'contact_sample/index.php', /* url */ 'contact_sample/index', /* テンプレートのファイル名 */ 1, /* 共通のヘッダーを使用する場合は1 */ 1, /* 共通のフッターを使用する場合は1 */ 2, /* edit_flg 管理画面の削除を表示しない場合は2 */ NULL, /* meta タグ:author */ NULL, /* meta タグ:description */ NULL, /* meta タグ:keyword */ NULL, NOW(), /* 作成日時 */ NOW(), /* 更新日時 */ NULL /* meta タグ:robots */ ),( 10, 30, 'お問い合わせ-sample(完了ページ)', 'contact_sample/complete.php', 'contact_sample/complete', 1, 1, 2, NULL, NULL, NULL, NULL, NOW(), NOW(), NULL );
注)スマホ、モバイル用に関しても同様に登録すること
確認
http://〇〇.□□/contact_sample/ にアクセスして送信確認する。
コメントを残す