ECCUBEで売り切れ商品の入荷希望リクエストフォームを作成
簡潔に作業工程
今回の記事は、以下の情報を参照する事によって、できあがっております。
毎度、有益な情報、ありがとうございます。
[EC-CUBE 2.11.2] お問い合わせフォームを追加したい | NAKWEB × EC-CUB
EC-CUBE:送信メールにショップの基本情報を自動表示する | ITOBEN STYLE Blog
EC-CUBE:特定商品のお問い合わせフォーム | ITOBEN STYLE Blog
作業工程
1.フォームページの複製
2.フォーム完了ページの複製
3.1と2のページ用のデータベース処理
4.特定商品のお問い合わせ機能追加と設置
以上のような流れになります。
ページの複製は、慣れれば簡単ですが、慣れるまでがしんどいですね。
書き換えの見落としとか、多いですし。
では、作業に入ります。
1.フォームページの複製
参照記事の方ですべて完結してしまっていますが、こちらでもやり方を紹介します。
僕の方では、リクエストフォームなので、requestというファイル名をメインとして使って行きます。
では、以下の通りにファイルを複製しましょう。
複製元 | 複製後 |
---|---|
html/contact/index.php | html/contact/request.php |
data/class_extends/page_extends/contact/LC_Page_Contact_Ex.php | data/class_extends/page_extends/contact/LC_Page_Contact_Request_Ex.php |
data/class/pages/contact/LC_Page_Contact.php | data/class/pages/contact/LC_Page_Contact_Request.php |
data/Smarty/templates/default/contact/index.tpl | data/Smarty/templates/default/contact/request.tpl |
複製が終わりましたら、中身の修正行きましょう。
html/contact/request.php
以下を参照して書き換え
25行目 require_once CLASS_EX_REALDIR . 'page_extends/contact/LC_Page_Contact_Request_Ex.php'; 31行目 $objPage = new LC_Page_Contact_Request_Ex();
data/class_extends/page_extends/contact/LC_Page_Contact_Request_Ex.php
以下を参照して書き換え
25行目 require_once CLASS_REALDIR . 'pages/contact/LC_Page_Contact_Request.php'; 36行目 class LC_Page_Contact_Request_Ex extends LC_Page_Contact_Request {
data/class/pages/contact/LC_Page_Contact_Request.php
以下を参照して書き換え
34行目 class LC_Page_Contact_Request extends LC_Page_Ex { 47行目付近 $this->tpl_title = '売り切れ商品リクエスト'; } else { $this->tpl_title = '売り切れ商品リクエスト(入力ページ)'; 110行目付近 // エラー無しで完了画面 $this->tpl_mainpage = 'contact/request_confirm.tpl'; $this->tpl_title = '売り切れ商品リクエスト(確認ページ)'; 131行目付近 // 完了ページへ移動する SC_Response_Ex::sendRedirect('request_complete.php');
ファイル修正は以上です。
data/Smarty/templates/default/contact/request.tpl の修正は、お好きなようにどうぞ。
2.フォーム完了ページの複製
ほぼ同じことの繰り返しですが、フォーム完了ページを複製します。
ファイルの複製は以下の通りに。
複製元 | 複製後 |
---|---|
html/contact/complete.php | html/contact/request_complete.php |
data/class_extends/page_extends/contact/LC_Page_Contact_Complete_Ex.php | data/class_extends/page_extends/contact/LC_Page_Contact_Request_Complete_Ex.php |
data/class/pages/contact/LC_Page_Contact_Complete.php | data/class/pages/contact/LC_Page_Contact_Request_Complete.php |
data/Smarty/templates/default/contact/complete.tpl | data/Smarty/templates/default/contact/request_complete.tpl |
data/Smarty/templates/default/contact/confirm.tpl | data/Smarty/templates/default/contact/request_confirm.tpl |
複製が終わったら、中身の修正をします。
html/contact/request_complete.php
以下を参照して書き換え
25行目 require_once CLASS_EX_REALDIR . 'page_extends/contact/LC_Page_Contact_Request_Complete_Ex.php'; 31行目 $objPage = new LC_Page_Contact_Request_Complete_Ex();
data/class_extends/page_extends/contact/LC_Page_Contact_Request_Complete_Ex.php
以下を参照して書き換え
25行目 require_once CLASS_REALDIR . 'pages/contact/LC_Page_Contact_Request_Complete.php'; 36行目 class LC_Page_Contact_Request_Complete_Ex extends LC_Page_Contact_Request_Complete {
data/class/pages/contact/LC_Page_Contact_Request_Complete.php
以下を参照して書き換え
34行目 class LC_Page_Contact_Request_Complete extends LC_Page_Ex { 46行目付近 $this->tpl_title = '売り切れ商品リクエスト(完了ページ)';
3. 1と2のページ用のデータベース処理
データベース操作は、phpMyAdminの場合で説明します。
アカウントにログイン>EC-CUBEのデータベース>dtb_pagelayout>上部メニュー挿入ボタン
カラム | 値(リクエストフォーム) | 値(リクエスト完了ページ) |
---|---|---|
device_type_id | 10 | 10 |
page_id | 重複しないID番号 | 重複しないID番号 |
page_name | リクエストフォーム | リクエスト完了ページ |
url | contact/request.php | contact/request_complete.php |
filename | contact/request | contact/request_complete |
header_chk | 1 | 1 |
footer_chk | 1 | 1 |
edit_flg | 2 | 2 |
author | (空白) | (空白) |
description | (空白) | (空白) |
keyword | (空白) | (空白) |
update_url | (空白) | (空白) |
create_date | 関数のNOWを選択 | 関数のNOWを選択 |
update_date | 関数のNOWを選択 | 関数のNOWを選択 |
記入、選択を終えたら実行です。
これで動くようになるはずなので、一度、問い合わせフォームをテストして下さい。
4.特定商品のお問い合わせ機能追加と設置
では、新しく作られたフォームに、特定商品の問い合わせ機能を追加し、その機能が売り切れ商品限定での利用という設置を行います。
/data/class/pages/contact/LC_Page_Contact_Request.php
83行目付近に以下を追加。
//この商品へのお問い合わせ $objQuery =SC_Query_Ex::getSingletonInstance(); $this->arrRet = array(); //パラメータ $contact_product = $_GET['contact_product']; //商品情報を取得 if(isset($contact_product)){ $arrRet = $objQuery->select("*", "dtb_products", "product_id = $contact_product"); } //データベースからデータの取得ができたか if(isset($arrRet)){ $this->arrRet = $arrRet[0]; }
/data/Smarty/templates/default/contact/request.tpl
27行目付近に以下を追加
<!--{if $arrRet}--> <div style="float:left; margin:0 10px 10px 0;"> <img src="<!--{$smarty.const.IMAGE_SAVE_URLPATH|sfTrimURL}-->/<!--{$arrRet.main_list_image|sfNoImageMainList|h}-->" alt="<!--{$arrRet.name|h}-->" /> </div> <h3>「<!--{$arrRet.name|h}-->」の商品リクエスト</h3><br /> <!--{/if}-->
/data/Smarty/templates/default/products/detail.tpl
ただいま品切れ中です。のすぐ下に以下を追加。
<!--▼この商品へのお問い合わせ▼--> <div id="contact_product"> <a href="<!--{$smarty.const.ROOT_URLPATH}-->contact/request.php?contact_product=<!--{$arrProduct.product_id|h}-->"><strong>「<!--{$arrProduct.name|h}-->」</strong>の入荷リクエスト</a> </div> <br />
/data/Smarty/templates/default/products/list.tpl
ただいま品切れ中です。のすぐ下に以下を追加。
<!--▼この商品へのお問い合わせ▼--> <div id="contact_product"> <a href="<!--{$smarty.const.ROOT_URLPATH}-->contact/request.php?contact_product=<!--{$arrProduct.product_id|h}-->"><strong>「<!--{$arrProduct.name|h}-->」</strong>の入荷リクエスト</a> </div> <br />
以上で完成です。
テスト商品の在庫を0にすれば、売り切れ問い合わせのリンクが出ますので、それをクリックしましょう。
画像と商品名が問い合わせページに表示されるはずです。
注意:こちらの問い合わせフォームですが、スマートフォンと携帯サイトの方では、この段階では利用できません。
モバイル系はページ数が多いと不便も出てくるので、増やすよりも工夫でなんとかしたほうがいいのではないでしょうか。
総括
簡単そうに見えて、こんなにも面倒なページの複製でした。
しかし、一度覚えてしまえば、何度でもいけるというのは、便利です。
問い合わせだけでも、普通の問い合わせ、売り切れ商品のリクエスト、入荷希望商品リクエスト等、フォームとしては3つぐらいあった方が、いいのかもしれません。
気軽にサイト側にアクセスできるという、門戸の開けた感じというのは、親しみが持たれるきっかけとも考えられます。
手間はありますが、こうした何気ない気遣いはやっていく価値ありますね。