バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 検索時に特定のカテゴリを表示させないようにしたい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
erizou
投稿日時: 2019/1/28 16:48
対応状況: −−−
半人前
登録日: 2013/3/19
居住地:
投稿: 30
検索時に特定のカテゴリを表示させないようにしたい
▼テンプレート
[EC-CUBE] 3.0.17
[レンタルサーバ] KVMにサーバー構築
[OS] CentOS7
[PHP] PHP7.2
[データベース] MySQL5.7
[WEBサーバ] Apache2.4
[ブラウザ] Firefox

[実現したいこと]
EC-CUBE3でショップを作成しているのですが、お客さまからの要望で特定のカテゴリを検索結果から除外するようにという話が出ました。

この場合、どのようにカスタマイズするとそれが実現するのか調べたのですが、なかなか見付けられませんでした。

できる・できない等も含め、具体的な方法がお分かりであればお教え頂けますと助かります。
468
投稿日時: 2019/1/28 20:40
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 1500
Re: 検索時に特定のカテゴリを表示させないようにしたい
検索結果とは、eccube内のキーワード検索の結果の事でしょうか?
あと、表示させないのはカテゴリ自体ですか?
それともカテゴリに所属する商品を非表示にしたいという事でしょうか?
もう少し具体的な説明をいただけますと、出来る事、出来ない事の判断ができると思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

erizou
投稿日時: 2019/1/29 9:00
対応状況: −−−
半人前
登録日: 2013/3/19
居住地:
投稿: 30
Re: 検索時に特定のカテゴリを表示させないようにしたい
468 様

検索結果は、ec-cube内のキーワード検索の結果のことで相違ありません。

また、表示させないのはカテゴリ自体もそうですし、そこに所属する商品も非表示にしたいです。

一般的な商品のカテゴリ(ウェアやバッグなど)もあるのですが、特定のチームだけが購入できるチームのカテゴリもあり、そのチームカテゴリ(チームAなど)とその配下の商品は検索された結果に出ては困る、ということなのです。

(カテゴリ)
-ウェア   一般商品なので検索表示OK
-ボトムス  一般商品なので検索表示OK
-バッグ   一般商品なので検索表示OK
-チームA  ※カテゴリもここに属する商品も検索非表示
-チームB  ※カテゴリもここに属する商品も検索非表示

なんとなく言いたいことは伝わりますでしょうか?
468
投稿日時: 2019/1/31 13:00
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 1500
Re: 検索時に特定のカテゴリを表示させないようにしたい
特定のチームA, チームBの判定はどのように行う予定ですか?
ログインしたユーザーで判断されるのでしょうか?
カテゴリとユーザーを紐づけて条件とされるのでしょうか?

カテゴリ、商品自体を非表示とするのに
SQLFilterの仕組みを利用するのが良いかもしれません。
/src/Eccube/Doctrine/Filter/SoftDeleteFilter.php
が参考になるのではないかと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

erizou
投稿日時: 2019/2/7 10:48
対応状況: −−−
半人前
登録日: 2013/3/19
居住地:
投稿: 30
Re: 検索時に特定のカテゴリを表示させないようにしたい
468様

インフルエンザでバタバタしてしまい返信遅くなりました。
参考ありがとうございます。

チームA、チームBは別途認証ページを作成し、
チームA用のログインページからログインすると、チームAの商品一覧を表示する、
チームB用のログインページからログインすると、チームBの商品一覧を表示するという感じで遷移させる予定です。

ただ、話がどんどん変わり、その一覧だけで完結する予定だったのに、一般商品も購入できなければならないということになり、検索の問題にぶつかりました。

SQLFilterの仕組みの利用以外は、他考えにくいものなのでしょうか?
ちゃんと調べていませんが、カテゴリIDが商品のタグに持っているならば、CSSで非表示するという手も使えるかもしれないなぁと思っていました。

468
投稿日時: 2019/2/7 12:39
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 1500
Re: 検索時に特定のカテゴリを表示させないようにしたい
CSSの非表示で要件が満たせるのであれば、特にSQLFilterを利用する必要は無いかと思います。

ただ、DBから抽出された結果をCSSで表示/非表示を判定した場合(twig上での判定になるかと思います)
例えば、以下のような商品が登録されていると仮定して、
お皿A カテゴリ一般
お皿B カテゴリ一般
お皿C カテゴリチームA
お皿D カテゴリチームA
お皿E カテゴリチームB
お皿F カテゴリ一般
お皿G カテゴリ一般
お皿H カテゴリ一般
お皿I カテゴリチームA
お皿J カテゴリチームB

一般の方が商品一覧画面で1ページ5件表示 検索キーワード「皿」の条件で商品を表示した場合、
1ページ目には、
お皿A カテゴリ一般
お皿B カテゴリ一般

2ページ目には、
お皿F カテゴリ一般
お皿G カテゴリ一般
お皿H カテゴリ一般

と、ページ単位で表示される商品件数が揃わない商品一覧ページになるかと思います。

paginatorという仕組みの関係で
DBから取り出すデータが、
1ページ目は
お皿A カテゴリ一般
お皿B カテゴリ一般
お皿C カテゴリチームA
お皿D カテゴリチームA
お皿E カテゴリチームB

2ページ目は
お皿F カテゴリ一般
お皿G カテゴリ一般
お皿H カテゴリ一般
お皿I カテゴリチームA
お皿J カテゴリチームB

になるかと思います。
商品点数が少なく、ページャーを利用する必要が無いのであれば、
CSSでの表示切替で問題無いかと思いますが、
HTMLソースを直接参照されて、URLに直アクセスされた場合、
どうするのかといった検討も必要かと思います。
商品詳細ページ自体もCSSで非表示とする事は可能ですが、
基本、CSSはブラウザのデベロッパーツールで自由に変更できますので、
サーバ側(PHP等)での制約をしっかりと制御しておかないと
一般の方でも注文出来てしまうという事が起こりうると思います。
 


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

erizou
投稿日時: 2019/2/12 9:15
対応状況: 開発中
半人前
登録日: 2013/3/19
居住地:
投稿: 30
Re: 検索時に特定のカテゴリを表示させないようにしたい
468様

ご意見並びに見解と、ありがとうございます。
確かにCSSで対応した場合、ページャーで表示数が変わるということを失念しておりました。

となると、商品取得時のSQLの対策は必須ですね。
SoftDeleteFilter.phpの仕組みを使用する方向で検討してみます。

https://qiita.com/jeaman0321/items/2617ff0334c979158906
上記のURLがそれの利用例かなと思いました。
参考に試してみます。

色々と勉強になり、大変助かりました。
ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

統計情報

総メンバー数は39,435名です
総投稿数は89,408件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1872
4
yuh
1557
5
468
1500
6
red
1207
7
umebius
1007
8
fukap
907
9
tsuji
835
10
shutta
827
11 ramrun 789
12
tao_s
667
13 karin 656
14 sumida 641
15
h_tanaka
637
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.