[EC-CUBE2.13]お問い合わせフォームを追加する
- 公開日:2015/6/19
EC-CUBEには標準でお問い合わせフォームが一つ用意されています。
このお問い合わせフォームとは別に返品受付フォームを追加してみようと思います。
手順
追加する返品受付フォームを「return」とします。
ページを追加する
html/contact/index.php
html/contact/complete.php
をコピーして以下のファイルを追加します。
html/contact/return.php
html/contact/return_complete.php
●html/contact/return.phpを以下のとおり修正する
require_once '../require.php'; require_once CLASS_EX_REALDIR . 'page_extends/contact/LC_Page_Return_Ex.php'; $objPage = new LC_Page_Return__Ex(); $objPage->init(); $objPage->process();
●html/contact/return_complete.phpを以下のとおり修正する
require_once '../require.php'; require_once CLASS_EX_REALDIR . 'page_extends/contact/LC_Page_Return_Complete_Ex.php'; $objPage = new LC_Page_Return_Complete_Ex(); $objPage->init(); $objPage->process();
tplファイルを追加する
data/Smarty/templates/default/contact/index.tpl
data/Smarty/templates/default/contact/confirm.tpl
data/Smarty/templates/default/contact/complete.tpl
をコピーして以下のファイルを追加します。
data/Smarty/templates/default/contact/return.tpl
data/Smarty/templates/default/contact/return_confirm.tpl
data/Smarty/templates/default/contact/return_complete.tpl
追加するフォームに必要な任意の項目で入力ページ、確認ページ、完了ページをつくります。
メールテンプレートを追加、設定
data/Smarty/templates/default/mail_templates/contact_mail.tpl
をコピーして以下のファイルを追加します。
data/Smarty/templates/default/mail_templates/return_mail.tpl
フォーム作成時に追加した任意の項目を考慮して自動送信されるメールの内容をつくります。
メールテンプレートができたら、管理画面から使用するテンプレートとして登録します。
管理画面[システム設定]>[マスターデータ管理]で「mtb_mail_template」に返品申請受付メールを追加します。
(ここでのIDをclass追加時に使用します)
次に「mtb_mail_tpl_path」でテンプレートファイルを指定します。
classを追加する
data/class/pages/contact/LC_Page_Contact.php
data/class/pages/contact/LC_Page_Contact_Complete.php
をコピーして以下のファイルを追加します。
data/class/pages/contact/LC_Page_Return.php
data/class/pages/contact/LC_Page_Return_Complete.php
●LC_Page_Return.phpを以下のとおり修正する
class LC_Page_Return extends LC_Page_Ex { /** * Page を初期化する. * * @return void */ public function init() { parent::init(); if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE) { $this->tpl_title = '返品申請フォーム'; } else { $this->tpl_title = '返品申請フォーム(入力ページ)'; } $this->httpCacheControl('nocache');
case 'confirm': // エラーチェック $this->lfInitParam($objFormParam); $objFormParam->setParam($_POST); $objFormParam->convParam(); $objFormParam->toLower('email'); $objFormParam->toLower('email02'); $this->arrErr = $this->lfCheckError($objFormParam); // 入力値の取得 $this->arrForm = $objFormParam->getFormParamList(); if (SC_Utils_Ex::isBlank($this->arrErr)) { // エラー無しで完了画面 $this->tpl_mainpage = 'contact/return_confirm.tpl'; $this->tpl_title = '返品申請(確認ページ)'; } break;
case 'complete': $this->lfInitParam($objFormParam); $objFormParam->setParam($_POST); $this->arrErr = $objFormParam->checkError(); $this->arrForm = $objFormParam->getFormParamList(); if (SC_Utils_Ex::isBlank($this->arrErr)) { $this->lfSendMail($this); // 完了ページへ移動する SC_Response_Ex::sendRedirect('return_complete.php'); SC_Response_Ex::actionExit(); } else { SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR); SC_Response_Ex::actionExit(); } break;
lfSendMailファンクションでtemplate_idを指定します。
template_idは、管理画面でメールテンプレートを登録したときの数字です。
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 11, // template_id $objPage, // objPage $CONF['email03'], // from_address $CONF['shop_name'], // from_name $CONF['email02'], // reply_to $CONF['email02'] // bcc ); }
フォームに追加した項目で入力チェックが必要な場合は、lfInitParam(&$objFormParam)に追記します。
●LC_Page_Return_Complete.phpを以下のとおり修正する
class LC_Page_Return_Complete extends LC_Page_Ex { /** * Page を初期化する. * * @return void */ public function init() { parent::init(); $this->tpl_title = '返品申請(完了ページ)'; $this->tpl_mainno = 'contact'; }
class_extendsを追加する
data/class_extends/pages_extends/contact/LC_Page_Contact_Ex.php
data/class_extends/pages_extends/contact/LC_Page_Contact_Complete_Ex.php
をコピーして以下のファイルを追加します。
data/class_extends/pages_extends/contact/LC_Page_Return_Ex.php
data/class_extends/pages_extends/contact/LC_Page_Return_Complete_Ex.php
●LC_Page_Return_Ex.phpを以下のとおり修正する
require_once CLASS_REALDIR . 'pages/contact/LC_Page_Return.php'; /** * 返品申請 のページクラス(拡張). * * LC_Page_Return をカスタマイズする場合はこのクラスを編集する. * * @package Page * @author * @version */ class LC_Page_Return_Ex extends LC_Page_Return {
(コメント部分の修正はお好きなように。)
●LC_Page_Return_Complete_Ex.phpを以下のとおり修正する
require_once CLASS_REALDIR . 'pages/contact/LC_Page_Return_Complete.php'; /** * 返品申請(完了ページ) のページクラス(拡張). * * LC_Page_Return_Complete をカスタマイズする場合はこのクラスを編集する. * * @package Page * @author * @version */ class LC_Page_Return_Complete_Ex extends LC_Page_Return_Complete {
(コメント部分の修正はお好きなように。)
データベースに追加する
「dtb_pagelayout」に返品申請フォームの入力ページと完了ページを追加します。
●入力ページ
device_type_id | 10 |
---|---|
page_id | 最後の番号+1 |
page_name | 返品申請フォーム |
url | contact/return.php |
filename | contact/return |
header_chk | 1 |
footer_chk | 1 |
edit_flg | 2 |
create_date | now() |
update_date | now() |
●完了ページ
device_type_id | 10 |
---|---|
page_id | 上記入力ページの番号+1 |
page_name | 返品申請(完了ページ) |
url | contact/return_complete.php |
filename | contact/return_complete |
header_chk | 1 |
footer_chk | 1 |
edit_flg | 2 |
create_date | now() |
update_date | now() |
作業量が多目ですが、これで完了です。
追加するフォームの項目が多いと大変かも・・・