[EC-Cube2.13.x]問い合わせフォームの複製

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」に複製

ファイルの中身を適宜修正しておく。

注)利用するテンプレートそれぞれに行うこと

メールテンプレートを登録する

管理画面のメニュー「システム設定」から「マスターデータ管理」画面へ

「mtb_mail_template」を選択

テンプレート名を追加する

「mtb_mail_tpl_path」を選択

テンプレートのパスを登録

パスは複製したファイル「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/ にアクセスして送信確認する。

コメントを残す

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

*