EC-CUBE3 「予約」「入荷待ち」に対応させる方法

またしても、プラグインを使わないでゴリゴリ行く系です。
今回はphpを使わないで管理画面からできるので
結構、楽かと思います。

 

ここで対応する動作

  1. 「手作り巾着」を売るとします。
  2. 在庫は5個
  3. 6個目からは「入荷次第発送で予約」にします

仕組み

  1. 【作業①】在庫を105個でUP
  2. 【作業②】在庫が100個になったら「カートに入れる」ボタンを「入荷次第発送で予約」にする

【作業①】商品を追加します

この時、在庫数を105個にします

 

 

【作業②】在庫が100個になったらの動作

「Product.stock_min」が現在の在庫らしいので
100を含んでそれ以下の時は「入荷次第発送で予約」の文字にします。

 

管理画面から内容をいじります。

「コンテンツ管理」→「ページ管理」→「商品詳細ページ」app/template/default/Product/detail.twig
のファイルを修正します。

228行目あたりの「{# カートボタン #}」からちょっと下の(下に記載の赤い部分)を修正します

 

■元データ■

{# カートボタン #}
<div id=”detail_cart_box__button_area” class=”btn_area”>
<ul id=”detail_cart_box__insert_button” class=”row”>
<li class=”col-xs-12 col-sm-8″><button type=”submit” id=”add-cart” class=”btn btn-primary btn-block prevention-btn prevention-mask”>カートに入れる</button></li>
</ul>

 

■修正後データ■

{# カートボタン #}
<div id=”detail_cart_box__button_area” class=”btn_area”>
<ul id=”detail_cart_box__insert_button” class=”row”>

{% if Product.stock_min <= 100 %}
<li class=”col-xs-12 col-sm-8″><button type=”submit” id=”add-cart” class=”btn btn-primary btn-block prevention-btn prevention-mask”>入荷次第発送で予約</button></li>

{% else %}
<li class=”col-xs-12 col-sm-8″><button type=”submit” id=”add-cart” class=”btn btn-primary btn-block prevention-btn prevention-mask”>カートに入れる</button></li>

{%endif %}

</ul>

 

すると、
在庫数が105~101は「カートに入れる」が
在庫数100~1は「入荷次第発送で予約」に代わります。

 

実際の動き

在庫105個~101の時

 

コツコツ購入をしていって在庫が100になったとき

ここでは文字だけが変わっていますが、cssとかをいじって色を変えるとかもいいと思います。

その時はcssで「!important;」を入れないと、なかなか上手く表示されないので注意です。

 

 

 

該当商品のみこの方法にする場合

一番簡単な方法

在庫数の設定を1000とか10000とか、ほかの商品とは格別に違う在庫数にして、処理の分岐をその数量にする方法が手っ取り早いです。

 

ちょっと面倒だけど、あと楽な方法

カテゴリで分割します。
たとえばカテゴリで「ハンドメイド」コーナーを作ります。

一定在庫を切ったら「予約」にする商品は、商品登録のときに「ハンドメイド」のカテゴリも選択するようにします。

上記「■修正後データ■」の部分で赤い文字上記と同じで、青い部分を追加します。

(*******)の部分にはカテゴリIDが7なら
{% if Product.belongsToCategory(7) %}
となります。

 

■コード1■

{% if Product.belongsToCategory(******) %}
{% if Product.stock_min <= 100 %}
<li class=”col-xs-12 col-sm-8″><button type=”submit” id=”add-cart” class=”btn btn-primary btn-block prevention-btn prevention-mask”>入荷次第発送で予約</button></li>
{% else %}
<li class=”col-xs-12 col-sm-8″><button type=”submit” id=”add-cart” class=”btn btn-primary btn-block prevention-btn prevention-mask”>カートに入れる</button></li>
{%endif %}
{% else %}
<li class=”col-xs-12 col-sm-8″><button type=”submit” id=”add-cart” class=”btn btn-primary btn-block prevention-btn prevention-mask”>カートに入れる</button></li>

{%endif %}

 

※カテゴリ番号の調べ方

管理画面の「商品管理」「カテゴリ編集」でカテゴリ名のところにマウスを合わせると、下の方に/category/* という感じで番号がでます。

ここの例だと「ハンドメイド」は「7」となります。

 

面倒だけど、特定の商品だけを予約タイプにする方法

上のカテゴリ分けと同じ感じで、商品を登録する際に使用する商品コードで分岐をいれます。

この方法だと、また同じような予約商品を追加したときに、このプログラム部分も修正しないといけないので面倒ですが、クライアントが「どうしてもカテゴリは嫌!」って言いだしたら対応するしかないでしょう…

(config.ymlに入れるっていう方法もあるけど、それはまた別の知識が必要なので他の時に…)

 

■コード1■の

{% if Product.belongsToCategory(******) %}

の部分を

{% if Product.code_min == ‘****’ %}

に変更します

 

※商品コードではなくIDを使用するときには

{% if Product.id == ‘3’ %}

となります。

 

おまけ:商品IDの調べ方

商品ページを開いて表示されるURLの一番最後の数字です。

この場合は「3」ですね。

 

 

コメントを残す