バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > カテゴリ擬似複製について

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
river555
投稿日時: 2009/12/16 6:08
対応状況: −−−
半人前
登録日: 2009/8/23
居住地: 大阪
投稿: 14
カテゴリ擬似複製について
EC-CUBEをカスタマイズするにあたり、分からない点が出てきました為、
質問させてください。

【環境】
EC-CUBE 2.3.4
OS Linux
DBサーバ MySQL 5.1.22-rc
WEBサーバ Apache
PHP 5.2.5


今回、サイドナビのカテゴリ一覧を2つに分けたいと思い、
色々考えております。

カテゴリA (1)
 −カテゴリA1 (3)
 −カテゴリA2 (6)

カテゴリB (2)
 −カテゴリB1 (4)
 −カテゴリB2 (5)

※()内はカテゴリID

カテゴリ編集では、上記のように設定致しました。
その上で、カテゴリAブロックではカテゴリA内のカテゴリの一覧、
同じくカテゴリBではカテゴリB、という形にしたいのです。

そこで、

/data/class/page/frontparts/block/LC_PageFrontParts_Bloc_Category.php

をカテゴリA用と仮定します。


111行目あたり


        if($count_check) {
            $where = "del_flg = 0 AND product_count > 0";
        } else {
            $where = "del_flg = 0";
        }


の部分でwhereに対してcategory_id = 1追加して


        if($count_check) {
            $where = "category_id = 1 AND del_flg = 0 AND product_count > 0";
        } else {
            $where = "category_id = 1 AND del_flg = 0";
        }


とすると、カテゴリAの項目だけが出てしまい、下層カテゴリは
表示されません。

また、カテゴリAについては表示しなくても良く、下層カテゴリが
一覧されるようにしたいのです。

そこで、


        if($count_check) {
            $where = "parent_category_id = 1 AND del_flg = 0 AND product_count > 0";
        } else {
            $where = "parent_category_id = 1 AND del_flg = 0";
        }


parent_category_id = 1と変更しました。

しかし、何も出てきてくれなくなってしまいます。


カテゴリA内のlevel2カテゴリが表示されlevel3以降は折りたたみ式で
カテゴリ表示したいのですが、上手く行きません。


何か良い方法があれば、ご教授下さい。
AMUAMU
投稿日時: 2009/12/18 15:25
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: カテゴリ擬似複製について
修正しようとしている当該ルーチンlfGetCatTreeを修正するのではなく、呼び出し元のprocess側から表示したいところカテゴリIDだけを第一引数に直接固定値で与えれば良いと思います。

※当該ソースみてたら、コミュ版も正式版も呼び出し側での引数指定が間違ってるっぽいですね・・・動作に支障はないですが。


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

river555
投稿日時: 2009/12/20 4:25
対応状況: −−−
半人前
登録日: 2009/8/23
居住地: 大阪
投稿: 14
Re: カテゴリ擬似複製について
AMUAMU様
ご返信ありがとうございます。

ご指示頂きました点を確認してみましたのでご連絡致します。

環境は下記のような形で試しました。

A
└A1
 └AA1
  └AAA1
└A2
 └AA2
 └AA3
└A3
└A4

Aカテゴリの配下のA1〜A4を一覧して、各カテゴリを開くと配下の1層目が出てくるように
したいと考えております。

まず、

呼び出し元のProsessで

$this ->lfGetCatTree(this->tpl_category_id, false ,$this);

この状態から

$test = array(1);
$this ->lfGetCatTree($test, false ,$this);

に変更してみました。

尚、第一引数に直接、Category_idの番号を入れると下記エラーが出た為、
配列に置き換えた上で、代入しました。



Warning: Invalid argument supplied for foreach() in /(domain)/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Category.php on line 120



上記エラーの120行目とは、


       foreach ($arrParent_category_id as $category_id) {
            $arrParentID = $objDb->sfGetParents($objQuery, 'dtb_category', 'parent_category_id', 'category_id', $category_id);
            $arrBrothersID = SC_Utils_Ex::sfGetBrothersArray($arrRet, 'parent_category_id', 'category_id', $arrParentID);
            $arrChildrenID = SC_Utils_Ex::sfGetUnderChildrenArray($arrRet, 'parent_category_id', 'category_id', $category_id);

            $this->root_parent_id[] = $arrParentID[0];

            $arrDispID = array_merge($arrBrothersID, $arrChildrenID);

            foreach($arrRet as $key => $array) {
                foreach($arrDispID as $val) {
                    if($array['category_id'] == $val) {
                        $arrRet[$key]['display'] = 1;
                        break;
                    }
                }
            }
        }





また、下記のように試したところ、

約129行目

                foreach($arrDispID as $val) {
                    if($array['category_id'] == $val) {
                        $arrRet[$key]['display'] = 1;
                        break;
                    }
                }




if($array['category_id'] == $val) {



if($array['parent_category_id'] == $val) {

とparent_category_idに変更すると、


 A1
 A2
 A3
 A4

とトップレベルのカテゴリは表示されずAカテゴリの配下のカテゴリが表示され
一瞬、希望通りの動きになったのかと思いきや、下記のようにA1をクリックし展開すると
AA1の配下のカテゴリとA2の別カテゴリ配下も出てきてしまいます。


 A1
 └AA1
  └AAA1
 A2
 └AA2
 └AA3
 A3
 A4


もしかしたら、私のやり方が間違っているだけなのかもしれません。
おかしい所がありましたらご指摘頂けますでしょうか。
AMUAMU
投稿日時: 2009/12/21 18:22
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: カテゴリ擬似複製について
コードを確認していませんが、恐らく、その挙動の変更はテンプレート側の修正が必要だと思います。


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は90,170名です
総投稿数は110,324件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1682
8
red
1571
9
mcontact
1351
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.