バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

 > フロント機能 > EC-CUBE3.0.11 category.twigでの商品数判定につきまして

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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様はじめ、ネットでいろいろと情報を
上げてくださっていた皆様方、誠にありがとうございました。
<(_ _)>
YOKO
投稿日時: 2018/3/2 15:22
対応状況: 解決済
新米
登録日: 2011/3/16
居住地: 新潟県
投稿: 9
Re: EC-CUBE3.0.11 category.twigでの商品数判定につきまして
既に解決済みになっていますが、私もつい最近EC-CUBE3.0.15をいじりはじめて、同様な問題に直面し、このスレッドを発見いたしました。
nanasess様 の提示されているソースファイルに若干手を加えることで、子供を持ったカテゴリーの商品数の算出ができましたので、書き込ませていただきます。
returnの前に数行追加してみました。


public function publishCount()
    {
        $result = array_reduce(
            array_map(
                function ($ProductCategory) {
                    $Product = $ProductCategory->getProduct();
                    if (\Eccube\Util\EntityUtil::isNotEmpty($Product) && $Product->getStatus()->getId() === 1) {
                        return 1;
                    } else {
                        return 0;
                    }
                }, $this->ProductCategories->toArray()),
            function ($carry, $item) {
                return $carry += $item;
            }
        );

        // ▼▼▼▼ 追加 ここから ▼▼▼▼
        $arrayCategory = $this->Children;
        if (count($arrayCategory)) {
            foreach ($arrayCategory as $category) {
                $result += $category->publishCount();
            }
        }
        // ▲▲▲▲ 追加 ここまで ▲▲▲▲

        return $result ? $result : 0;
    }


以上です。
« 1 (2)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,975名です
総投稿数は110,019件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

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

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.