Changeset 22586


Ignore:
Timestamp:
2013/02/28 09:30:36 (11 years ago)
Author:
pineray
Message:

#2166 カテゴリーツリーのデータをツリー状に取得

Location:
branches/version-2_12-dev
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-dev/data/Smarty/templates/default/frontparts/bloc/category.tpl

    r22206 r22586  
    2626    }); 
    2727//]]></script> 
     28 
    2829<div class="block_outer"> 
    2930    <div id="category_area"> 
    3031        <div class="block_body"> 
    3132            <h2><img src="<!--{$TPL_URLPATH}-->img/title/tit_bloc_category.gif" alt="商品カテゴリ" /></h2> 
    32             <!--{strip}--> 
    33                 <ul id="categorytree"> 
    34                     <!--{assign var=preLev value=1}--> 
    35                     <!--{assign var=firstdone value=0}--> 
    36                     <!--{section name=cnt loop=$arrTree}--> 
    37                         <!--{* 表示フラグがTRUEなら表示 *}--> 
    38                         <!--{if $arrTree[cnt].display == 1}--> 
    39                             <!--{assign var=level value=`$arrTree[cnt].level`}--> 
    40                             <!--{assign var=levdiff value=`$level-$preLev`}--> 
    41                                 <!--{if $levdiff > 0}--> 
    42                                     <ul> 
    43                                 <!--{elseif $levdiff == 0 && $firstdone == 1}--> 
    44                                     </li> 
    45                                 <!--{elseif $levdiff < 0}--> 
    46                                     <!--{section name=d loop=`$levdiff*-1`}--> 
    47                                             </li> 
    48                                         </ul> 
    49                                     <!--{/section}--> 
    50                                     </li> 
    51                                 <!--{/if}--> 
    52                             <li class="level<!--{$level}--><!--{if in_array($arrTree[cnt].category_id, $tpl_category_id)}--> onmark<!--{/if}-->"> 
    53                                 <p> 
    54                                     <a href="<!--{$smarty.const.ROOT_URLPATH}-->products/list.php?category_id=<!--{$arrTree[cnt].category_id}-->"<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id)}--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|h}-->(<!--{$arrTree[cnt].product_count|default:0}-->)</a> 
    55                                 </p> 
    56                             <!--{if $firstdone == 0}--><!--{assign var=firstdone value=1}--><!--{/if}--> 
    57                             <!--{assign var=preLev value=`$level`}--> 
    58                         <!--{/if}--> 
    59                         <!--{* セクションの最後に閉じタグを追加 *}--> 
    60                         <!--{if $smarty.section.cnt.last}--> 
    61                             <!--{if $preLev-1 > 0}--> 
    62                                 <!--{section name=d loop=`$preLev-1`}--> 
    63                                     </li> 
    64                                 </ul> 
    65                                 <!--{/section}--> 
    66                                 </li> 
    67                             <!--{else}--> 
    68                                 </li> 
    69                             <!--{/if}--> 
    70                         <!--{/if}--> 
    71                     <!--{/section}--> 
    72                 </ul> 
    73             <!--{/strip}--> 
     33            <!--{include file="`$smarty.const.TEMPLATE_REALDIR`frontparts/bloc/category_tree_fork.tpl" children=$arrTree treeID="categorytreelist"}--> 
    7434        </div> 
    7535    </div> 
  • branches/version-2_12-dev/data/Smarty/templates/sphone/frontparts/bloc/category.tpl

    r22206 r22586  
    2525    <h2 class="title_block">商品カテゴリ</h2> 
    2626    <nav id="categorytree"> 
    27         <ul id="categorytreelist"> 
    28             <!--{assign var=preLev value=1}--> 
    29             <!--{assign var=firstdone value=0}--> 
    30             <!--{section name=cnt loop=$arrTree}--> 
    31                 <!--{* インデントは Smarty 構文を優先としています。 *}--> 
    32                 <!--{* カテゴリ表示・非表示切り替え *}--> 
    33                 <!--{if $arrTree[cnt].view_flg != "2"}--> 
    34                     <!--{* 表示フラグがTRUEなら表示 *}--> 
    35                     <!--{assign var=level value=`$arrTree[cnt].level`}--> 
    36                     <!--{* level2以下なら表示(level指定可能) *}--> 
    37                     <!--{if $level <= 5 || $arrTree[cnt].display == 1}--> 
    38                         <!--{assign var=levdiff value=`$level-$preLev`}--> 
    39                         <!--{if $levdiff > 0}--> 
    40                             <ul> 
    41                         <!--{elseif $levdiff == 0 && $firstdone == 1}--> 
    42                             </li> 
    43                         <!--{elseif $levdiff < 0}--> 
    44                             <!--{section name=d loop=`$levdiff*-1`}--> 
    45                                     </li> 
    46                                 </ul> 
    47                             <!--{/section}--> 
    48                             </li> 
    49                         <!--{/if}--> 
    50  
    51                         <li class="level<!--{$level}--><!--{if in_array($arrTree[cnt].category_id, $tpl_category_id)}--> onmark<!--{/if}-->"><span class="category_header"></span><span class="category_body"><a rel="external" href="<!--{$smarty.const.ROOT_URLPATH}-->products/list.php?category_id=<!--{$arrTree[cnt].category_id}-->"<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id)}--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|h}-->(<!--{$arrTree[cnt].product_count|default:0}-->)</a></span> 
    52                         <!--{if $firstdone == 0}--> 
    53                             <!--{assign var=firstdone value=1}--> 
    54                         <!--{/if}--> 
    55                         <!--{assign var=preLev value=`$level`}--> 
    56                     <!--{/if}--> 
    57  
    58                     <!--{* セクションの最後に閉じタグを追加 *}--> 
    59                     <!--{if $smarty.section.cnt.last}--> 
    60                         <!--{if $preLev-1 > 0}--> 
    61                             <!--{section name=d loop=`$preLev-1`}--> 
    62                                     </li> 
    63                                 </ul> 
    64                             <!--{/section}--> 
    65                             </li> 
    66                         <!--{else}--> 
    67                             </li> 
    68                         <!--{/if}--> 
    69                     <!--{/if}--> 
    70                 <!--{/if}--> 
    71             <!--{/section}--> 
    72         </ul> 
     27        <!--{include file="`$smarty.const.SMARTPHONE_TEMPLATE_REALDIR`frontparts/bloc/category_tree_fork.tpl" children=$arrTree treeID="categorytreelist"}--> 
    7328 
    7429        <script>//<![CDATA[ 
  • branches/version-2_12-dev/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Category.php

    r22567 r22586  
    132132        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    133133        $objDb = new SC_Helper_DB_Ex(); 
     134 
    134135        $col = '*'; 
    135136        $from = 'dtb_category left join dtb_category_total_count ON dtb_category.category_id = dtb_category_total_count.category_id'; 
     
    142143        $objQuery->setOption('ORDER BY rank DESC'); 
    143144        $arrRet = $objQuery->select($col, $from, $where); 
     145 
     146        $arrTree = SC_Utils_Ex::buildTree('category_id', 'parent_category_id', 10, $arrRet); 
     147 
    144148        foreach ($arrParentCategoryId as $category_id) { 
    145149            $arrParentID = $objDb->sfGetParents( 
     
    162166            ); 
    163167            $this->root_parent_id[] = $arrParentID[0]; 
    164             $arrDispID = array_merge($arrBrothersID, $arrChildrenID); 
    165             foreach ($arrRet as &$arrCategory) { 
    166                 if (in_array($arrCategory['category_id'], $arrDispID)) { 
    167                     $arrCategory['display'] = 1; 
    168                 } 
    169             } 
    170         } 
    171         return $arrRet; 
     168            $this->arrDispID = array_merge($arrBrothersID, $arrChildrenID); 
     169        } 
     170 
     171        return $arrTree; 
    172172    } 
    173173 
  • branches/version-2_12-dev/data/class/util/SC_Utils.php

    r22567 r22586  
    19221922        return $return; 
    19231923    } 
     1924 
     1925    /** 
     1926     *  
     1927     * @param string $primary_key 
     1928     * @param string $glue_key 
     1929     * @param integer $max_depth 
     1930     * @param array $correction 
     1931     * @param integer $base_id 
     1932     * @return array ツリーの配列 
     1933     */ 
     1934    public static function buildTree($primary_key, $glue_key, $max_depth, $correction = array(), $base_id = 0) 
     1935    { 
     1936        $children = array(); 
     1937        foreach ($correction as $child) { 
     1938            $children[$child[$glue_key]][] = $child; 
     1939        } 
     1940        $arrTree = $children[$base_id]; 
     1941        foreach ($arrTree as &$child) { 
     1942            SC_Utils_Ex::addChild($child, $primary_key, 1, $max_depth, $children); 
     1943        } 
     1944        return $arrTree; 
     1945    } 
     1946 
     1947    /** 
     1948     * ツリーの親子をつなげるルーチン. 
     1949     *  
     1950     * @param array $target 親 
     1951     * @param string $primary_key 主キーの識別子 
     1952     * @param integer $level 親の階層 
     1953     * @param integer $max_depth 階層の深さの最大値 
     1954     * @param array $children 子の配列(キーが親ID) 
     1955     * @return void 
     1956     */ 
     1957    public static function addChild(&$target, $primary_key, $level, $max_depth, &$children = array()) 
     1958    { 
     1959        if (isset($children[$target[$primary_key]])) { 
     1960            $target['children'] = $children[$target[$primary_key]]; 
     1961            if ($level + 1 < $max_depth) { 
     1962                foreach ($target['children'] as &$child) { 
     1963                    SC_Utils_Ex::addChild($child, $primary_key, $level++, $max_depth, $children); 
     1964                } 
     1965            } 
     1966        } 
     1967    } 
    19241968} 
  • branches/version-2_12-dev/html/user_data/packages/sphone/js/category.js

    r22091 r22586  
    9292                var linkObj = document.createElement("a"); 
    9393                linkObj.innerText = '+'; 
    94                 tgt.childNodes[0].className="category_header plus"; 
    95                 tgt.childNodes[0].appendChild(linkObj); 
     94                $(tgt).children('span.category_header') 
     95                        .addClass('plus') 
     96                        .append(linkObj); 
    9697                j++; 
    9798                linkObj.parentNode.setAttribute('onclick', 'listopen(' + lv + ',' + num + ')'); 
Note: See TracChangeset for help on using the changeset viewer.