バージョン選択

フォーラム

メニュー

オンライン状況

19 人のユーザが現在オンラインです。 (9 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 19
もっと...

サイト内検索

質問 > フロント機能 > 在庫有り、なしで表示をコントロールしたい。

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
NSX-R
投稿日時: 2013/2/1 9:20
対応状況: −−−
長老
登録日: 2012/12/14
居住地:
投稿: 234
Re: 在庫有り、なしで表示をコントロールしたい。
dkazuto様

お世話になっております
下記のように修正したらリスト一覧ではエラーが出なくなりました。
http://svn.ec-cube.net/open_trac/changeset/21975
どうもありがとうございました

カテゴリーは &nostock_hidden=1を最後につけると大丈夫でした。

本当にありがとうございましたm(_ _)m


NSX-R
投稿日時: 2013/2/1 9:45
対応状況: −−−
長老
登録日: 2012/12/14
居住地:
投稿: 234
Re: 在庫有り、なしで表示をコントロールしたい。
dkazuto様

お世話になっております

無事、在庫の非表示をコントロールできるようになりました。
ありがとうございました

もうひとつ質問があるのですが

カテゴリーをクリックすると、
**件の商品がございます。と表示されますが

その数字も在庫ありなしで変化させることも可能でしょうか?

flealog
投稿日時: 2013/2/2 0:09
対応状況: −−−
仙人
登録日: 2008/6/10
居住地:
投稿: 485
Re: 在庫有り、なしで表示をコントロールしたい。
引用:

dkazutoさんは書きました:
NSX-R様

LC_Page_Products_List.phpに以下のような変更を加えてみてください。



//表示条件の取得
$this->arrSearchData = array(
    'category_id'   => $this->lfGetCategoryId(intval($this->arrForm['category_id'])),
    'maker_id'      => intval($this->arrForm['maker_id']),
    'name'          => $this->arrForm['name']
);
$this->orderby = $this->arrForm['orderby'];

// ↓↓追加↓↓
$this->nostock_hidden = $this->arrForm['nostock_hidden'];
// ↑↑追加↑↑

//ページング設定
$this->tpl_pageno   = $this->arrForm['pageno'];
$this->disp_number  = $this->lfGetDisplayNum($this->arrForm['disp_number']);


上記はaction()メソッド内にあります。

$this->no_stock_hidden = $this->arrForm['no_stock_hidden'];

の1行を追加します。

また、NOSTOCK_HIDDENの部分を以下のように変更してみてください。


// 在庫無し商品の非表示
if (NOSTOCK_HIDDEN === true || $this->nostock_hidden == 1) {
    $searchCondition['where'] .= ' AND (stock >= 1 OR stock_unlimited = 1)';
}


このように変更した後、実際にページにアクセスします。
その際に nostock_hidden=1というGETキーをURLの後ろにつけます。
http://eccube.domain/products/list.php?nostock_hidden=1

すると、在庫なしの商品は表示されなくなるはずです。

後は、フロントのHTMLでURLにnostock_hidden=1というパラメータをつけるかつけないかを変えられるボタンを
設置することで、「在庫切れ非表示」と「全て表示」を切り替えることが可能です。

以上参考になればと思います。


dkazuto 様
私もこの機能が大変魅力的で参考にさせていただきたいのですが、どうやらページ送りで nostock_hidden=1 は解除されてしまうようです。
もしよろしければ、クッキーなどでページ送りしても解除されない方法まで教えていただけると大変喜びます。

厚かましいお願いを申し訳ありません。


----------------
EC-CUBE3っぽいテンプレート
GitHub で公開中
https://github.com/bluestylejp

お問い合わせ番号CSV登録&メール送信プラグイン
http://urx.red/qDT6

dkazuto
投稿日時: 2013/2/4 9:46
対応状況: −−−
一人前
登録日: 2012/5/10
居住地:
投稿: 95
Re: 在庫有り、なしで表示をコントロールしたい。
NSX-R様

これもECCUBE自体のバグというか書き方の順番に問題があるようでして、
表示件数用のSQLを設定する部分を以下のように変更してみてください。

以前お教えしたコードで

$searchCondition['where_for_count'] = $searchCondition['where'];

// 在庫無し商品の非表示
if (NOSTOCK_HIDDEN === true || $this->nostock_hidden == 1) {
    $searchCondition['where'] .= ' AND (stock >= 1 OR stock_unlimited = 1)';
}


という部分があったかと思いますが、それを以下のように書き換えてみてください。


// 在庫無し商品の非表示
if (NOSTOCK_HIDDEN === true || $this->nostock_hidden == 1) {
    $searchCondition['where'] .= ' AND (stock >= 1 OR stock_unlimited = 1)';
}

$searchCondition['where_for_count'] = $searchCondition['where'];


在庫無し商品の非表示用条件文を
$searchCondition['where_for_count'] = $searchCondition['where'];
と入れ替えるという書き換えになります。

どうやら、$searchCondition['where_for_count']にも書かないと
表示件数が反映されないようです。

以上、ご確認ください。
dkazuto
投稿日時: 2013/2/4 9:57
対応状況: −−−
一人前
登録日: 2012/5/10
居住地:
投稿: 95
Re: 在庫有り、なしで表示をコントロールしたい。
flealog様

こんにちは。

ページ送りや1ページあたりの表示件数を変えたときにも
nostock_hiddenをの状態をキープしておく方法になります。

クッキーを利用してもいいのですが、ECCUBEのフレームワークでは、同じページであれば、
条件をPOST出来る機能が付いておりますので、そちらを利用した方法を書いてみます。

/data/Smarty/templates/default/products/list.tpl
の65行目〜90行目あたりに以下のような箇所があるかと思います。


    <form name="form1" id="form1" method="get" action="?">
        <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />
        <input type="hidden" name="mode" value="<!--{$mode|h}-->" />
        <!--{* ▼検索条件 *}-->
        <input type="hidden" name="category_id" value="<!--{$arrSearchData.category_id|h}-->" />
        <input type="hidden" name="maker_id" value="<!--{$arrSearchData.maker_id|h}-->" />
        <input type="hidden" name="name" value="<!--{$arrSearchData.name|h}-->" />
        <!--{* ▲検索条件 *}-->
        <!--{* ▼ページナビ関連 *}-->
        <input type="hidden" name="orderby" value="<!--{$orderby|h}-->" />
        <input type="hidden" name="disp_number" value="<!--{$disp_number|h}-->" />
        <input type="hidden" name="pageno" value="<!--{$tpl_pageno|h}-->" />
        <!--{* ▲ページナビ関連 *}-->
        <!--{* ▼注文関連 *}-->
        <input type="hidden" name="product_id" value="" />
        <input type="hidden" name="classcategory_id1" value="" />
        <input type="hidden" name="classcategory_id2" value="" />
        <input type="hidden" name="product_class_id" value="" />
        <input type="hidden" name="quantity" value="" />
        <!--{* ▲注文関連 *}-->
        <input type="hidden" name="rnd" value="<!--{$tpl_rnd|h}-->" />
    </form>


上記のformタグの一番下に

<input type="hidden" name="nostock_hidden" value="<!--{$nostock_hidden}-->" />

を追加してみてください。

これで、ページ送りや表示件数変更時にもnostock_hiddenはキープされると思います。
ただし、別カテゴリに移動したり、別のページに遷移すると条件はキープされませんのでご注意ください。

別カテゴリ遷移時にも条件をキープしたい場合は、クッキーやセッションを利用する必要が出てきます。

以上、ご参考ください。
flealog
投稿日時: 2013/2/4 18:18
対応状況: −−−
仙人
登録日: 2008/6/10
居住地:
投稿: 485
Re: 在庫有り、なしで表示をコントロールしたい。
dkazuto 様

ありがとうございました!
ページ遷移しても非表示のままになりました。


----------------
EC-CUBE3っぽいテンプレート
GitHub で公開中
https://github.com/bluestylejp

お問い合わせ番号CSV登録&メール送信プラグイン
http://urx.red/qDT6

NSX-R
投稿日時: 2013/2/4 23:09
対応状況: −−−
長老
登録日: 2012/12/14
居住地:
投稿: 234
Re: 在庫有り、なしで表示をコントロールしたい。
dkazuto様

無事、非表示&維持推移できるようになりました。
本当にどうもありがとうございました

以前のHPではそれができなくて、お客様からの要望が多かった機能なのでとても嬉しいです。

今後ともどうぞよろしくお願いいたします。
« 1 (2)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は89,355名です
総投稿数は110,082件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1652
8
red
1570
9
mcontact
1304
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.