今回は「在庫切れ商品を非表示にする」に関する挙動についてを見てみたいと思います。
以前に以前に各種初期設定について各種初期設定に関する記事を書いたことがあります。
この際に「在庫切れ商品を非表示にする」に関して簡単な説明をさせて頂きました。
簡単におさらいすると以下の管理ページに存在している設定項目の1つです。
「管理画面 > 設定 > 基本情報設定 > ショップマスター」
「在庫切れ商品を非表示にする」の項目を有効にすると在庫の全くない商品は商品が存在していない様に扱われると云うものです。
基本的に在庫の無い商品をリストに並べるとお客さんからすると戸惑う原因にもなりあまり良いことではありません。
その点を考えると上記の機能は非常に良いものだと思います。
しかし、その一方で少し困ったことも発生します。
それは「お気に入り」や「購入履歴」から商品詳細ページに移動した際に「ページがみつかりません。」と云うページに移動してしまう事です。
実際に商品が存在していないのですから間違った対応ではありませんが、この状態だと「品切れ」なのか「再入荷予定なし」なのかもわかりません。
専用のエラーページが欲しい気もするところです。
在庫切れの商品に関しては「リストの表示は不要だが、商品詳細ページは表示して欲しい。」と云う要望も多いのではないでしょうか。
そういった場合の対象方を記載したいと思います。
いつもの様にプラグインにて対応する形式では無く、本体ソースを直接編集する形式ですがご了承ください(笑)
■「在庫切れ商品を非表示にする」を有効にしつつ商品詳細を表示する方法
●ファイル
<インストールフォルダ>/src/Eccube/Controller/ContactController.php
●モジュール
detail
●参考行目
205行目ぐらいから
●変更内容
if ($BaseInfo->getNostockHidden() === Constant::ENABLED) { $app['orm.em']->getFilters()->enable('nostock_hidden'); }
↓
//if ($BaseInfo->getNostockHidden() === Constant::ENABLED) { // $app['orm.em']->getFilters()->enable('nostock_hidden'); //}
●概要説明
商品詳細ページ用の「在庫切れ商品を非表示にする」の判定を行わないようにしました。
該当の個所をコメントアウトすることで「在庫切れ商品を非表示にする」かどうかの判定を行いません。
また、有効の場合に非表示とするための設定もコメントアウトしている為、非表示とされることが無くなります。
一から変更を行う場合には色々な変更が必要とはなります。
しかし「在庫切れ商品を非表示にする」を有効にしておくことで上記のコメントアウトだけで対応が可能になります。
非常に楽チンですね(笑)
同じファイルの「index」モジュールにも同じような処理がありますが、該当箇所は一覧ページを作成する為のものになります。
「index」モジュール内の内容と間違えない様にしましょう。
実際に商品在庫が無い状況で商品詳細ページを表示しても「ただ今品切れ中」の文字が表示されるかと思います。
商品詳細ページがこれで問題無いのであれば、一覧のみ表示を消すと云う考えかたはそれほどおかしいとは思いません。
一度試してみても良いのではないでしょうか。
と云うことで今回は終了とさせて頂きます。