> フロント機能 > EC-CUBE3.0.11 category.twigでの商品数判定につきまして |
フロント機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
YOKO |
投稿日時: 2018/3/2 15:22
対応状況: 解決済
|
新米 登録日: 2011/3/16 居住地: 新潟県 投稿: 9 |
Re: EC-CUBE3.0.11 category.twigでの商品数判定につきまして 既に解決済みになっていますが、私もつい最近EC-CUBE3.0.15をいじりはじめて、同様な問題に直面し、このスレッドを発見いたしました。
nanasess様 の提示されているソースファイルに若干手を加えることで、子供を持ったカテゴリーの商品数の算出ができましたので、書き込ませていただきます。 returnの前に数行追加してみました。
以上です。 |
MPV |
投稿日時: 2016/11/12 11:22
対応状況: 解決済
|
仙人 登録日: 2011/3/27 居住地: 投稿: 309 |
Re: EC-CUBE3.0.11 category.twigでの商品数判定につきまして nanasess様
お返事が遅れまして申し訳ありませんでした。 引用: ここまでちゃんとやろうとすると、 getSelfAndDescendants() というので配下のカテゴリまで取得して、商品を取得して、、となるので、ちょっとこのスペースでサンプルコードを提示するのは難しいです。 また、相当重くなると思いますので、再帰クエリを使用するなり、もうちょっと根本的に検討した方が良いと思います。 仰られる通りだと思います。 実際かなり重く、TEST環境で 表示時間がtotaltime 約20000msです(T_T) ですので仕様を再度検討しまして、 カテゴリコンテンツプラグインを流用して 各カテゴリ毎に公開、非公開フラグを持たせては どうかと思い、今プラグインを改修しています。 (カテゴリ毎であれば件数も少なく、ループする 必要もなくなりますので) DBへの項目追加、及びフォームへの項目追加、 フラグが更新登録できるところまでは 勉強しながらなんとかできました。 あとは、app/template/default/Block/category.twigで plg_category_contentを参照する方法が わかっておらず躓いておりますが、これができれば なんとかなるのではないかなと思っています。 勉強しつつやってみます。 (誠に勝手なお願いですが、もしヒントを頂ければ 幸いですが・・・。) nanasess様にはいつも良いご助言やご回答を頂いておりまして 誠に恐縮です。ありがとうございました。<(_ _)> 先のnanasess様のご助言までで、本スレッドは回答済みに させて頂きます。 【2016/11/18 追記】 おかげさまで、plg_category_contentを参照する方法が わかりました。 こちらのスレッドを参考にさせて頂きました。 http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&topic_id=16622&forum=13 いろいろネットで検索し、以下の様にしました。 ?別途カテゴリメニューブロックを追加するための プラグインを追加 ?追加したプラグインのControllerでplg_category_contentを 取得し、twigのパラメータに追加 ?twigの中で、パラメータでループ処理する (ループする必要がありました。失礼しました。) ?ループして同じカテゴリIDの公開フラグを取得する ?公開フラグでカテゴリを表示するための判定を行う まだまだ未熟ですので、たぶんもっといい方法が あるかと思いますが、調べていく過程で いろいろと勉強になりました。 (プラグイン作成、querybuilderなど) nanasess様はじめ、ネットでいろいろと情報を 上げてくださっていた皆様方、誠にありがとうございました。 <(_ _)> |
nanasess |
投稿日時: 2016/11/7 10:59
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: EC-CUBE3.0.11 category.twigでの商品数判定につきまして category_id=30 直下の商品しか取得できないのが原因ですね。
ちゃんとやるには、再帰して、category_id=30 の場合は category_id=155, 156, 157 も取得するといったロジックにしなくてはなりません。 ここまでちゃんとやろうとすると、 getSelfAndDescendants() というので配下のカテゴリまで取得して、商品を取得して、、となるので、ちょっとこのスペースでサンプルコードを提示するのは難しいです。 また、相当重くなると思いますので、再帰クエリを使用するなり、もうちょっと根本的に検討した方が良いと思います。 |
MPV |
投稿日時: 2016/11/7 10:15
対応状況: −−−
|
仙人 登録日: 2011/3/27 居住地: 投稿: 309 |
Re: EC-CUBE3.0.11 category.twigでの商品数判定につきまして nanasess 様
お世話になります。 お返事が遅くなりましたこと、誠に申し訳ありませんでした。 商品件数が多かったので、てこずりましたが ようやくCSVでのカテゴリ登録と商品登録が できました・・・。 引用: おそらく、 del_flg = 1 になっている商品があるのではないかなと思っています。 ご推察通り、削除済み商品もございます。 こちらにつきましても、削除フラグを立てて そのままCSV登録しております。 EC-CUBE3.0.10インストール直後の状態から 規格を新たに登録し、カテゴリCSV登録と商品CSV登録を行って ご教授頂きましたソースを追加した形で確認しましたところ、 以下の場合はきちんと商品件数が表示されます。 〇親カテゴリのみの場合 〇子カテゴリ しかしながら、以下の場合は件数が0になってしまいます。 〇親カテゴリの下に子カテゴリが存在しており、 子カテゴリ内に商品が存在する場合の親カテゴリ
あと、予想されておりました通り表示時間はかかりますが、 ただこれはデバッグ用なので今のところ問題ないと 認識しております。 だいぶ時間が経ってしまいましたので、大変恐縮なのですが 上記の場合に件数が取れないのは、どういう要因が考えられるか ご教授頂ければ幸いです。 失礼いたします。<(_ _)> |
nanasess |
投稿日時: 2016/10/20 10:31
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: EC-CUBE3.0.11 category.twigでの商品数判定につきまして
で、どうでしょうか。 おそらく、 del_flg = 1 になっている商品があるのではないかなと思っています。 |
MPV |
投稿日時: 2016/10/19 23:21
対応状況: −−−
|
仙人 登録日: 2011/3/27 居住地: 投稿: 309 |
Re: EC-CUBE3.0.11 category.twigでの商品数判定につきまして nanasess様
大変申し訳ありませんでした。 EC-CUBE3.0.10のインストール直後の状態で お教え頂きましたコードで確認しましたところ きちんと取得ができました。 当方、EC-CUBE2系からのバージョンアップをしようとしており、 2系のDBテーブルから商品関連のテーブルをエクスポートして 3系のテーブルに合わせたデータをインポートして確認を していたのですが、これが要因でエンティティがないという エラーになってしまっているのかも知れません・・・。 DBのインポートではなく、商品とカテゴリをCSV登録しなおして もう一度確認してみようと思います。 nanasess様のコードであればきちんと取得できることが 確認できましたので、このスレッドは解決済みにします。 どうもありがとうございました。<(_ _)> |
MPV |
投稿日時: 2016/10/19 20:22
対応状況: −−−
|
仙人 登録日: 2011/3/27 居住地: 投稿: 309 |
Re: EC-CUBE3.0.11 category.twigでの商品数判定につきまして nanasess様
早々にお返事頂きまして、誠にありがとうございます。 お教え頂きました通りにやってみました。 ec3/src/Eccube/Entity/Category.phpの最後の方に
と、コードを追加しました。 そして、app/template/default/Block/category.twig に
というように、カテゴリ名の横に公開商品数を表示させてみようと しましたところ、やはり Twig_Error_Runtime in Template.php line 396: An exception has been thrown during the rendering of a template ("Entity was not found.") in "__string_template__4b98462fe4bd8fa020a5f9c3d2c7e3b00fc5db6e7bc57dcafad4ec00331e165e" at line 26. EntityNotFoundException in ProxyFactory.php line 177: Entity was not found. というように、エンティティがないという エラーが出てしまいます。(T_T) 今はEC-CUBE3.0.10に差し戻して確認しています。 |
nanasess |
投稿日時: 2016/10/19 19:16
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: EC-CUBE3.0.11 category.twigでの商品数判定につきまして 商品数が多くなると重いかもしれませんが、、、
src/Eccube/Entity/Category.php に、こんなメソッドを追加してやってください
そうすると、 category.twig では、こんな感じで公開商品数がとれるようになります
商品数が多い場合は、 Doctrine\Common\Collections\Criteria というのを使うと良いと思います Entity was not found. になるのは、削除された商品を見てしまっているのではないですかね。 |
MPV |
投稿日時: 2016/10/19 18:13
対応状況: −−−
|
仙人 登録日: 2011/3/27 居住地: 投稿: 309 |
Re: EC-CUBE3.0.11 category.twigでの商品数判定につきまして nanasess様
お世話になります。 ご無沙汰しております。 当方EC-CUBEの3系がはじめてなもので なかなか難儀しております。 レベルが低いと思いますがどうかご容赦下さい。 引用: Category.ProductCategories->count() で取得できると思います。 (厳密には親子関係を考慮しないといけませんが、表示非表示なら事足りるかと) 確認しようと思い、以下スレッドなども参考に やってみたところ、 http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&topic_id=17216&forum=10 http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&topic_id=17269&forum=10
だと、カテゴリ内の全商品数が取得できるというところは 確認できたのですが、これから非公開の商品数を除いた商品数を 取得する方法はありますでしょうか? 上記の参考スレッドをもとに
としてみたのですが、リレーションが切れているのか エンティティがないというエラーが出て、表示されません。 An exception has been thrown during the rendering of a template ("Entity was not found.") in "__string_template__2e23597b4311956d7fbabe6c59ebd260f74e17842d3371a8b97030442dc41c9b" at line 32. 大変恐縮ですが、ご教授頂ければ幸いです。 何卒、よろしくお願いいたします。<(_ _)> |
nanasess |
投稿日時: 2016/10/19 15:19
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: EC-CUBE3.0.11 category.twigでの商品数判定につきまして Category.ProductCategories->count() で取得できると思います。
(厳密には親子関係を考慮しないといけませんが、表示非表示なら事足りるかと) 次のバージョンで改善される予定ですが、 fetch: EXTRA_LAZY にしないと、大量の商品を含むカテゴリを参照した場合は重くなりますのでご注意ください。 https://github.com/EC-CUBE/ec-cube/blob/1481ff4131adc3315208531663f8729db2ab5fd2/src/Eccube/Resource/doctrine/Eccube.Entity.Category.dcm.yml#L55 |
(1) 2 » |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |