> フロント機能 > EC-CUBE3.0.11 category.twigでの商品数判定につきまして |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
MPV |
投稿日時: 2016/10/19 14:05
対応状況: −−−
|
仙人 登録日: 2011/3/27 居住地: 投稿: 309 |
EC-CUBE3.0.11 category.twigでの商品数判定につきまして システム情報
EC-CUBE 3.0.11 サーバーOS Windows NT 6.2 build 9200 (Windows 8 Professional Edition) i586 DBサーバー MySQL 10.1.13-MariaDB WEBサーバー Apache/2.4.17 (Win32) OpenSSL/1.0.2d PHP/5.6.23 PHP 5.6.23 (Core, bcmath, calendar, ctype, date, ereg, filter, ftp, hash, iconv, json, mcrypt, SPL, odbc, pcre, Reflection, session, standard, mysqlnd, tokenizer, zip, zlib, libxml, dom, PDO, bz2, SimpleXML, wddx, xml, xmlreader, xmlwriter, apache2handler, openssl, curl, fileinfo, gd, gettext, mbstring, exif, mysql, mysqli, Phar, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, mhash) HTTPユーザーエージェント Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0 お世話になります。 カテゴリナビでカテゴリ毎の商品数が0の場合に カテゴリを非表示にしたいため、表示判定を 以下の様に行っています。 app/template/default/Block/category.twig
EC-CUBE3.0.10では、dump出力も判定処理も 共にうまくいっていたのですが、EC-CUBE3.0.11に バージョンアップしたところ、判定処理が うまく動かなくなってしまいました。 カテゴリ毎の商品数が取得できないようです。 EC-CUBE3.0.10でのダンプは以下の通りです。 __string_template__3020333dd9452830c432087d4213fa00c8c6faeea32acf06aeabcbdff7ef7531 on line 69: 616 __string_template__3020333dd9452830c432087d4213fa00c8c6faeea32acf06aeabcbdff7ef7531 on line 73: "〇〇〇〇〇〇〇〇" __string_template__3020333dd9452830c432087d4213fa00c8c6faeea32acf06aeabcbdff7ef7531 on line 77: 0 __string_template__3020333dd9452830c432087d4213fa00c8c6faeea32acf06aeabcbdff7ef7531 on line 69: 574 __string_template__3020333dd9452830c432087d4213fa00c8c6faeea32acf06aeabcbdff7ef7531 on line 73: "△△△△△△△△" __string_template__3020333dd9452830c432087d4213fa00c8c6faeea32acf06aeabcbdff7ef7531 on line 77: 170 ※カテゴリ名は伏せました。 こちらについても、先日当方が上げたスレッド http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&topic_id=18142&forum=14 と同様に、symfonyのバージョン違いに起因するものでしょうか。 それとも、他の要因によるものでしょうか? dumpも出ないので、しばらくVer.3.0.10で様子見したほうが よろしいでしょうか・・・。 大変恐縮ですが、何か情報等ございましたら お教え頂ければ幸いです。 どうぞよろしくお願いいたします。<(_ _)> |
MPV |
投稿日時: 2016/10/19 15:07
対応状況: −−−
|
仙人 登録日: 2011/3/27 居住地: 投稿: 309 |
Re: EC-CUBE3.0.11 category.twigでの商品数判定につきまして 自レスで恐縮です。
当方その後確認しましたところ、判定処理が まずかったようで、親カテゴリの数が取得できずに 表示ができていなかったようです。 それでどうしようかと思ったところ、以下スレッドを 拝見しました。勉強&調査不足でした。 申し訳ありません。 http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&topic_id=18026&forum=10 CategoryTotalCountは使用できなくなったのですね。 子カテゴリはCategoryCountからカテゴリ毎の数が 取得できるようですが、(但しVer.3.0.10だけしか うまくいきませんでした。)Ver.3.0.11で 各カテゴリの商品数の取得方法はどうすれば できるのでしょうか? どなたか、Ver.3.0.11でカテゴリ内商品数で 判定する方法をご存知もしくは実践された方が いらっしゃいましたら、どうかご教授頂けないでしょうか。 あとはメンテナンス性が悪いですが、カテゴリIDで 表示非表示を判定するくらいしか当方は思いつかず・・・(T_T) スレ汚しで申し訳ありませんが、 どうぞよろしくお願いいたします。 |
nanasess |
投稿日時: 2016/10/19 15:19
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2313 |
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 |
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 19:16
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2313 |
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 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に差し戻して確認しています。 |
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様のコードであればきちんと取得できることが 確認できましたので、このスレッドは解決済みにします。 どうもありがとうございました。<(_ _)> |
nanasess |
投稿日時: 2016/10/20 10:31
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2313 |
Re: EC-CUBE3.0.11 category.twigでの商品数判定につきまして
で、どうでしょうか。 おそらく、 del_flg = 1 になっている商品があるのではないかなと思っています。 |
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/11/7 10:59
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2313 |
Re: EC-CUBE3.0.11 category.twigでの商品数判定につきまして category_id=30 直下の商品しか取得できないのが原因ですね。
ちゃんとやるには、再帰して、category_id=30 の場合は category_id=155, 156, 157 も取得するといったロジックにしなくてはなりません。 ここまでちゃんとやろうとすると、 getSelfAndDescendants() というので配下のカテゴリまで取得して、商品を取得して、、となるので、ちょっとこのスペースでサンプルコードを提示するのは難しいです。 また、相当重くなると思いますので、再帰クエリを使用するなり、もうちょっと根本的に検討した方が良いと思います。 |
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |