ECCUBEで売り切れ商品の入荷希望リクエストフォームを作成

ECサイトを運営してますと、商品が売り切れる事が、ままあります。
当たり前ですが、売り切れると、どうするか考えねばなりません。

再入荷すべきか、このまま廃番にすべきか。

売り切れにも原因がいくつかあるから、そう考えてしまいます。
人気がなさそうな商品だけに、入荷数が少なかったので、売り切れた。
人気すぎて、あっというまに売り切れた。
その他。

というよな感じなので、客に意見を聞いてみようじゃないか、と。
売り切れたらすぐに入荷するのではなく、客の意見で動いてみても良いのではないか。

そんな戦略って、どうですかね。

というわけで、売り切れ商品の入荷希望リクエストフォームの作り方をご紹介。

簡潔に作業工程

今回の記事は、以下の情報を参照する事によって、できあがっております。
毎度、有益な情報、ありがとうございます。

[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.phphtml/contact/request.php
data/class_extends/page_extends/contact/LC_Page_Contact_Ex.phpdata/class_extends/page_extends/contact/LC_Page_Contact_Request_Ex.php
data/class/pages/contact/LC_Page_Contact.phpdata/class/pages/contact/LC_Page_Contact_Request.php
data/Smarty/templates/default/contact/index.tpldata/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.phphtml/contact/request_complete.php
data/class_extends/page_extends/contact/LC_Page_Contact_Complete_Ex.phpdata/class_extends/page_extends/contact/LC_Page_Contact_Request_Complete_Ex.php
data/class/pages/contact/LC_Page_Contact_Complete.phpdata/class/pages/contact/LC_Page_Contact_Request_Complete.php
data/Smarty/templates/default/contact/complete.tpldata/Smarty/templates/default/contact/request_complete.tpl
data/Smarty/templates/default/contact/confirm.tpldata/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_id1010
page_id重複しないID番号重複しないID番号
page_nameリクエストフォームリクエスト完了ページ
urlcontact/request.phpcontact/request_complete.php
filenamecontact/requestcontact/request_complete
header_chk11
footer_chk11
edit_flg22
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つぐらいあった方が、いいのかもしれません。
気軽にサイト側にアクセスできるという、門戸の開けた感じというのは、親しみが持たれるきっかけとも考えられます。

手間はありますが、こうした何気ない気遣いはやっていく価値ありますね。

1 Comment

  1. とても便利なものなので、実装してみましたが、
    規格1と規格2のかけあわせで在庫がないばあい、
    入荷メールボタンが出現しません。
    どうしたらよろしいでしょうか。
    よろしくお願いいたします。

Leave a Reply

Your email address will not be published.


*