質問 > フロント機能 > 商品数の表示について |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ljue |
投稿日時: 2020/4/20 10:19
対応状況: −−−
|
半人前 登録日: 2020/4/20 居住地: 投稿: 14 |
商品数の表示について ECCUBE4系で、登録した商品数をカテゴリーごとに表示する方法が分かりません。
サイドバーに商品のカテゴリーを並べ、それぞれの商品登録数を表示したいです。 どうすれば商品登録数を表示できるようになるか教えていただきたいです。 |
468 |
投稿日時: 2020/4/20 10:54
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 商品数の表示について CategoryEntityにgetProductCategories()というカテゴリ紐づく商品情報(厳密にはカテゴリと商品の関連情報のみ持つProductCategoryEntity)を取得するメソッドがあるので
その結果からcount()で件数を取得すれば良いのではないでしょうか? 実際に試していないので何とも言えませんが twigの場合、Categoryのループの中で {{ Category.ProductCategories|length}} のような記述になるかと思います。
|
ljue |
投稿日時: 2020/4/21 15:06
対応状況: −−−
|
半人前 登録日: 2020/4/20 居住地: 投稿: 14 |
Re: 商品数の表示について ご回答いただきありがとうございます。
頂いた内容を元に実装したいのですが、具体的にどのようなコードを書いたらよいのか分かりません。 コードや編集箇所をご教示頂けますと幸いです。 Blockにsidebar.twigという新しいtwigファイルを生成し、 その中にカテゴリーを表示し、カテゴリー名の隣に公開している商品数を表示したいです。 恐れ入りますが、何卒よろしくお願いいたします。 |
468 |
投稿日時: 2020/4/21 16:34
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 商品数の表示について sidebar.twigにはカテゴリーの表示までは出来ていますか?
カテゴリをループさせて表示させるのは category_nav_pc.twigの記述が参考になると思います。 {% set Categories = repository('Eccube\\Entity\\Category').getList() %} で第1階層のカテゴリを取得して {% for Category in Categories %} {% endfor %} のところでループしています。 因みに第2階層以下の子カテゴリはどのように表示させる予定なのでしょうか? デフォルトのカテゴリナビのようにマウスオーバー時に子カテゴリを表示させるのでしょうか? それとも最初から展開状態で表示させるのでしょうか? もしくは第1階層のみ表示という形もありえるかと思いますが その辺りのご要望によってループ内の記述が変わってくるかと思います。
|
ljue |
投稿日時: 2020/4/22 14:15
対応状況: −−−
|
半人前 登録日: 2020/4/20 居住地: 投稿: 14 |
Re: 商品数の表示について 具体的にアドバイスいただきありがとうございます。
また、こちらの説明が足りておらずすみません。 category_nav_pc.twigの記述を参考にすることで 登録したカテゴリーを表示することができました。 ですが、実際に実装したい仕様のイメージは、サイドバーに、 +カテゴリーA +カテゴリーB +カテゴリーC のように親カテゴリーを並べ、カテゴリー名(例えばカテゴリーA)をクリックすると、 -カテゴリーA カテゴリーA-1( ) カテゴリーA-2( ) カテゴリーA-3( ) +カテゴリーB +カテゴリーC のように第2下層のカテゴリーが表示され、各カテゴリー名の後ろの カッコ内に商品登録数を表示できるように出来ないかと考えております。 |
468 |
投稿日時: 2020/4/22 19:33
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 商品数の表示について 第2カテゴリ以下の階層の表示/非表示については、
ECCUBEというよりjavascriptとCSSの話となってきますので jQueryのslideUp(), slideDown()等で検索して利用方法を確認していただくのが良いかと思います。 <ul>と<li>タグの組み合わせで各階層のエリアが組み立てられていますので、 それらの表示/非表示を切り替える形になるかと思います。 (+マーク、-マークの切り替え等も検討する必要がありますが) アコーディオンというライブラリ等もあったりしますが ご自身でサイトに外部ファイルの読込を組み込んで、 <ul>と<li>タグもライブラリに合わせて変更する必要もあり、 こういった作業に慣れていないと余計におかしくなってしまうかもしれません。 http://js.studio-kingdom.com/jqueryui/widgets/accordion あと、第2階層以下のみ商品登録数を表示したいとの事ですが デフォルトのcategory_nav_pc.twigは マクロという仕組みを使い、{{ tree(Category) }}を再帰的に呼び出して 第1階層からカテゴリを同じ内容で出力している為、 階層ごとの処理の切り替えが行えません。 {{ tree(Category) }}の箇所で 予め定義された{% macro tree(Category) %}~{% endmacro %} を実行しているのですが {{ tree(Category) }}の箇所で引数を増やして、今何階層目を処理しているか macro tree()の中で判定できるようにする必要があるように思います。 もしくは2階層目以降から{{ tree(Category) }}を呼び出すように変更する事でも対応可能と思います。 どちらの方法にしても プログラム的な書き換えが必要となり、少し難易度が高いように思います。
|
ljue |
投稿日時: 2020/4/23 17:23
対応状況: −−−
|
半人前 登録日: 2020/4/20 居住地: 投稿: 14 |
Re: 商品数の表示について 丁寧にご回答くださりありがとうございます。
JSやCSSなどについても言及していただき、大変参考になりました。 デフォルトのcategory_nav_pc.twigを使った実装は難しそうですが、ご説明いただいた内容を基に試行錯誤してみます。 ちなみに、素人質問で大変恐縮なのですが、{{ tree(Category) }}等を使わずに、例えば、 <ul> <li><a href="{{ url('product_list') }}?category_id=1">カテゴリーA-1</a></li> <li><a href="{{ url('product_list') }}?category_id=2">カテゴリーA-2</a></li> <li><a href="{{ url('product_list') }}?category_id=3">カテゴリーA-3</a></li> </ul> のようにカテゴリーIDをそれぞれリンクとして設定し、 それとは別にカテゴリーごとの公開商品数の情報(dtb_category_total_countのようなデータ?)などがあれば、そういった情報を個別に取得して表示するといったことは出来ないでしょうか? |
468 |
投稿日時: 2020/4/24 9:45
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 商品数の表示について ご提示いただいたように{{ tree(Category) }}を使わずに
twigに1つ1つカテゴリを記述していく形でも出来ない事はありませんが 管理画面でカテゴリを変更する都度、twigも変更する必要が出てきます。 ({{ tree(Category) }}を利用して動的にカテゴリを出力するのはメンテナンス作業を軽減する事が大きなメリットです) 個別にカテゴリを指定していくのであれば、以下のような記述で カテゴリを取得後、紐づくカテゴリ商品を取得・カウントできるのではないでしょうか? {{ repository('Eccube\\Entity\\Category').find(****).ProductCategories|length }} ****にカテゴリIDが入ります。 もしかしら、商品の公開/非公開を判定できずに非公開の商品もカウントされるかもしれませんが その場合はCategoryEntityにメソッドを追加して、きちんとロジックを作る必要があるかもしれません。
|
ljue |
投稿日時: 2020/4/24 17:21
対応状況: 解決済
|
半人前 登録日: 2020/4/20 居住地: 投稿: 14 |
Re: 商品数の表示について ご提示いただいた以下のコードで無事商品数を表示できました。
{{ repository('Eccube\\Entity\\Category').find(****).ProductCategories|length }} 非公開の商品もカウントされてしまうのですが、そちらは以下のスレを参考にさせていただき、なんとか非公開の商品を省くことが出来ました。 https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=18145&forum=5&viewmode=flat&order=DESC&start=0 色々とご教示いただきありがとうございました。大変助かりました。 仰る通り、({{ tree(Category) }}を使わずに実装しているので都度twigをいじる必要があるのは面倒ですが、とりあえず上記の実装で運用していこうかと思います。 また何かあれば質問させてください。 ありがとうございました! |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |