バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > メーカーごとのナビを表示したい

フロント機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
DDR
投稿日時: 2009/9/18 15:27
対応状況: −−−
仙人
登録日: 2008/6/21
居住地: 大阪
投稿: 307
Re: メーカーごとのナビを表示したい
お世話になります
こちらのソースにて、全商品のメーカーを表示させることが
できました!
ありがとう御座います。

これをカテゴリー別に表示させるようにしたいのですが
カテゴリーの判別をしている商品一覧のカテゴリブロックの
ようなソースは書いてあるのですが
tpl側で表示させるソースが分かりませんでした;;

素人が弄ってますので全然間違っているとは思いますが
ここが間違ってるなどアドバイス頂けたら幸いです


<?php

require_once(CLASS_PATH . "pages/frontparts/bloc/LC_Page_FrontParts_Bloc.php");

/**
 * メーカー のページクラス.
 *
 * @package Page
 * @author LOCKON CO.,LTD.
 * @version $Id:LC_Page_FrontParts_Bloc_Maker.php 15532 2007-08-31 14:39:46Z nanasess $
 */
class LC_Page_FrontParts_Bloc_Maker extends LC_Page_FrontParts_Bloc {

    // }}}
    // {{{ functions

    /**
     * Page を初期化する.
     *
     * @return void
     */
    function init() {
        parent::init();
        $bloc_file = 'maker.tpl';
        $this->setTplMainpage($bloc_file);
    }

    /**
     * Page のプロセス.
     *
     * @return void
     */
    function process() {
        $objView = new SC_SiteView();
        $objCustomer = new SC_Customer();
        $objQuery = new SC_Query();
        $objDb = new SC_Helper_DB_Ex();

        // メーカーの読込
        $where = "del_flg <> 1";
        $objQuery->setorder("rank DESC");
        $this->arrMaker = $objQuery->select("maker_id, name", "dtb_maker", $where);

        $objView->assignobj($this);

        $objSubView = new SC_SiteView();
        $objSubView->assignobj($this);
        $objSubView->display($this->tpl_mainpage);
 
 // 選択中のカテゴリIDを判定する
        $arrmaker_id = $objDb->sfGetCategoryId($_GET['product_id'], $_GET['maker_id']);

        // 選択中のカテゴリID
        $this->tpl_maker_id = empty($arrmaker_id) ? array(0) : $arrmaker_id;;
        $this->lfGetCatTree($this->tpl_maker_id, true, $this);

        $objSubView->assignobj($this);
        $objSubView->display($this->tpl_mainpage);
    }

    /**
     * デストラクタ.
     *
     * @return void
     */
    function destroy() {
        parent::destroy();
    }

    // カテゴリツリーの取得
    function lfGetCatTree($arrParent_maker_id, $count_check = false) {
        $objQuery = new SC_Query();
        $objDb = new SC_Helper_DB_Ex();
        $col = "*";
        $from = "dtb_maker left join dtb_maker_total_count using (maker_id)";
        // 登録商品数のチェック
        if($count_check) {
            $where = "del_flg = 0 AND product_count > 0";
        } else {
            $where = "del_flg = 0";
        }
        $objQuery->setoption("ORDER BY rank DESC");
        $arrRet = $objQuery->select($col, $from, $where);

        foreach ($arrParent_maker_id as $maker_id) {
            $arrParentID = $objDb->sfGetParents($objQuery, 'dtb_maker', 'parent_maker_id', 'maker_id', $maker_id);
            $arrBrothersID = SC_Utils_Ex::sfGetBrothersArray($arrRet, 'parent_maker_id', 'maker_id', $arrParentID);
            $arrChildrenID = SC_Utils_Ex::sfGetUnderChildrenArray($arrRet, 'parent_maker_id', 'maker_id', $maker_id);

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

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

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

        $this->arrTree = $arrRet;
    }

    // メインカテゴリーの取得
    function lfGetMainCat($count_check = false, &$objSubPage) {
        $objQuery = new SC_Query();
        $col = "*";
        $from = "dtb_maker left join dtb_maker_total_count using (maker_id)";
        // メインカテゴリーとその直下のカテゴリーを取得する。
        $where = 'level <= 2 AND del_flg = 0';
        // 登録商品数のチェック
        if($count_check) {
            $where .= " AND product_count > 0";
        }
        $objQuery->setoption("ORDER BY rank DESC");
        $arrRet = $objQuery->select($col, $from, $where);

        // メインカテゴリーを抽出する。
        $arrMainCat = array();
        foreach ($arrRet as $cat) {
            if ($cat['level'] != 1) {
                continue;
            }

            // 子カテゴリーを持つかどうかを調べる。
            $arrChildrenID = SC_Utils_Ex::sfGetUnderChildrenArray($arrRet, 'parent_maker_id', 'maker_id', $cat['maker_id']);
            $cat['has_children'] = count($arrChildrenID) > 0;
            $arrMainCat[] = $cat;
        }

        $objSubPage->arrCat = $arrMainCat;
        return $objSubPage;
    }
}
?>




tplファイル


<!--{$maincate[0].category_disp }-->
<ul class="subcategory_first">
<!--メーカーここから-->
  <ul>
<!--{section name=cnt loop=$arrMaker}-->
<!--{* 階層を level へ *}-->
<!--{assign var=level value="`$arrMaker[cnt].level`}-->
<!--{* カテゴリ名を disp_name へ *}-->
<!--{assign var=disp_name value="`$arrMaker[cnt].maker_name`"}-->
<!--{assign var=disp_disp value="`$arrMaker[cnt].maker_id`"}-->
<!--{* 表示カテゴリのみ *}-->
<!--{if $arrMaker[cnt].display == 1}-->
<!--{* 選択したカテゴリ *}-->
<!--{if in_array($arrMaker[cnt].maker_id, $tpl_category_id) }-->

 <li class="maker_list"><a href="<!--{$smarty.const.URL_DIR}-->products/list.php?maker_id=<!--{$arrMaker[cnt].maker_id}-->"><!--{$arrMaker[cnt].name|escape}--></a>
        </li>
<!--{* 未選択カテゴリ *}-->
<!--{else}-->
<li><a href="<!--{$smarty.const.URL_DIR}-->products/list.php?category_id=<!--{$arrTree[cnt].category_id}-->" title="<!--{$disp_name|escape}-->"><!--{$disp_name|escape}--></a></li>
<!--{/if}-->


<!--{$disp_disp|sfCutString:40|escape}-->

<!--{/if}-->
<!--{/section}-->
</ul>
</dl>
</div>
<!--商品カテゴリーここまで-->


----------------
------------------------------------------------------------------------------------------
EC-CUBE 3.0.17
DBサーバー mariaDB
WEBサーバー apache (CentOS)
PHP 7.1
-----------------------...

フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
   メーカーごとのナビを表示したい rst 2009/6/29 23:49
     Re: メーカーごとのナビを表示したい seasoft 2009/6/30 0:10
     Re: メーカーごとのナビを表示したい AMUAMU 2009/6/30 0:52
       Re: メーカーごとのナビを表示したい rst 2009/6/30 13:17
         Re: メーカーごとのナビを表示したい flealog 2009/6/30 15:14
           Re: メーカーごとのナビを表示したい rst 2009/6/30 16:10
           » Re: メーカーごとのナビを表示したい DDR 2009/9/18 15:27

 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1295
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.