質問 > フロント機能 > 検索時に特定のカテゴリを表示させないようにしたい |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
erizou |
投稿日時: 2019/1/28 16:48
対応状況: −−−
|
常連 登録日: 2013/3/19 居住地: 投稿: 39 |
検索時に特定のカテゴリを表示させないようにしたい ▼テンプレート
[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 居住地: 投稿: 3217 |
Re: 検索時に特定のカテゴリを表示させないようにしたい 検索結果とは、eccube内のキーワード検索の結果の事でしょうか?
あと、表示させないのはカテゴリ自体ですか? それともカテゴリに所属する商品を非表示にしたいという事でしょうか? もう少し具体的な説明をいただけますと、出来る事、出来ない事の判断ができると思います。
|
erizou |
投稿日時: 2019/1/29 9:00
対応状況: −−−
|
常連 登録日: 2013/3/19 居住地: 投稿: 39 |
Re: 検索時に特定のカテゴリを表示させないようにしたい 468 様
検索結果は、ec-cube内のキーワード検索の結果のことで相違ありません。 また、表示させないのはカテゴリ自体もそうですし、そこに所属する商品も非表示にしたいです。 一般的な商品のカテゴリ(ウェアやバッグなど)もあるのですが、特定のチームだけが購入できるチームのカテゴリもあり、そのチームカテゴリ(チームAなど)とその配下の商品は検索された結果に出ては困る、ということなのです。 (カテゴリ) -ウェア 一般商品なので検索表示OK -ボトムス 一般商品なので検索表示OK -バッグ 一般商品なので検索表示OK -チームA ※カテゴリもここに属する商品も検索非表示 -チームB ※カテゴリもここに属する商品も検索非表示 なんとなく言いたいことは伝わりますでしょうか? |
468 |
投稿日時: 2019/1/31 13:00
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 検索時に特定のカテゴリを表示させないようにしたい 特定のチームA, チームBの判定はどのように行う予定ですか?
ログインしたユーザーで判断されるのでしょうか? カテゴリとユーザーを紐づけて条件とされるのでしょうか? カテゴリ、商品自体を非表示とするのに SQLFilterの仕組みを利用するのが良いかもしれません。 /src/Eccube/Doctrine/Filter/SoftDeleteFilter.php が参考になるのではないかと思います。
|
erizou |
投稿日時: 2019/2/7 10:48
対応状況: −−−
|
常連 登録日: 2013/3/19 居住地: 投稿: 39 |
Re: 検索時に特定のカテゴリを表示させないようにしたい 468様
インフルエンザでバタバタしてしまい返信遅くなりました。 参考ありがとうございます。 チームA、チームBは別途認証ページを作成し、 チームA用のログインページからログインすると、チームAの商品一覧を表示する、 チームB用のログインページからログインすると、チームBの商品一覧を表示するという感じで遷移させる予定です。 ただ、話がどんどん変わり、その一覧だけで完結する予定だったのに、一般商品も購入できなければならないということになり、検索の問題にぶつかりました。 SQLFilterの仕組みの利用以外は、他考えにくいものなのでしょうか? ちゃんと調べていませんが、カテゴリIDが商品のタグに持っているならば、CSSで非表示するという手も使えるかもしれないなぁと思っていました。 |
468 |
投稿日時: 2019/2/7 12:39
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
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等)での制約をしっかりと制御しておかないと 一般の方でも注文出来てしまうという事が起こりうると思います。
|
erizou |
投稿日時: 2019/2/12 9:15
対応状況: 開発中
|
常連 登録日: 2013/3/19 居住地: 投稿: 39 |
Re: 検索時に特定のカテゴリを表示させないようにしたい 468様
ご意見並びに見解と、ありがとうございます。 確かにCSSで対応した場合、ページャーで表示数が変わるということを失念しておりました。 となると、商品取得時のSQLの対策は必須ですね。 SoftDeleteFilter.phpの仕組みを使用する方向で検討してみます。 https://qiita.com/jeaman0321/items/2617ff0334c979158906 上記のURLがそれの利用例かなと思いました。 参考に試してみます。 色々と勉強になり、大変助かりました。 ありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |