[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() |
作業量が多目ですが、これで完了です。
追加するフォームの項目が多いと大変かも・・・
フォルダ

