Changeset 22602


Ignore:
Timestamp:
2013/03/05 08:52:08 (11 years ago)
Author:
pineray
Message:

#2166 カテゴリーブロックのロジックを見直し.

Location:
branches/version-2_12-dev
Files:
1 deleted
8 edited

Legend:

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

    r22586 r22602  
    3131        <div class="block_body"> 
    3232            <h2><img src="<!--{$TPL_URLPATH}-->img/title/tit_bloc_category.gif" alt="商品カテゴリ" /></h2> 
    33             <!--{include file="`$smarty.const.TEMPLATE_REALDIR`frontparts/bloc/category_tree_fork.tpl" children=$arrTree treeID="categorytreelist"}--> 
     33            <!--{include file="`$smarty.const.TEMPLATE_REALDIR`frontparts/bloc/category_tree_fork.tpl" children=$arrTree treeID="categorytreelist" display=1}--> 
    3434        </div> 
    3535    </div> 
  • branches/version-2_12-dev/data/Smarty/templates/default/frontparts/bloc/category_tree_fork.tpl

    r22586 r22602  
    2121 *}--> 
    2222 
    23 <ul<!--{if $treeID != ""}--> id="<!--{$treeID}-->"<!--{/if}-->> 
     23<ul<!--{if $treeID != ""}--> id="<!--{$treeID}-->"<!--{/if}--><!--{if !$display}--> style="display: none;"<!--{/if}-->> 
    2424<!--{foreach from=$children item=child}--> 
    25     <li<!--{if !in_array($child.category_id, $arrDispID)}--> style="display: none;"<!--{/if}--> class="level<!--{$child.level}--><!--{if in_array($child.category_id, $tpl_category_id)}--> onmark<!--{/if}-->"> 
     25    <li class="level<!--{$child.level}--><!--{if in_array($child.category_id, $tpl_category_id)}--> onmark<!--{/if}-->"> 
    2626        <p><a href="<!--{$smarty.const.ROOT_URLPATH}-->products/list.php?category_id=<!--{$child.category_id}-->"<!--{if in_array($child.category_id, $tpl_category_id)}--> class="onlink"<!--{/if}-->><!--{$child.category_name|h}-->(<!--{$child.product_count|default:0}-->)</a></p> 
     27        <!--{if in_array($child.category_id, $arrParentID)}--> 
     28            <!--{assign var=disp_child value=1}--> 
     29        <!--{else}--> 
     30            <!--{assign var=disp_child value=0}--> 
     31        <!--{/if}--> 
    2732        <!--{if isset($child.children|smarty:nodefaults)}--> 
    28             <!--{include file="`$smarty.const.TEMPLATE_REALDIR`frontparts/bloc/category_tree_fork.tpl" children=$child.children}--> 
     33            <!--{include file="`$smarty.const.TEMPLATE_REALDIR`frontparts/bloc/category_tree_fork.tpl" children=$child.children display=$disp_child}--> 
    2934        <!--{/if}--> 
    3035    </li> 
  • branches/version-2_12-dev/data/Smarty/templates/sphone/frontparts/bloc/category.tpl

    r22586 r22602  
    2525    <h2 class="title_block">商品カテゴリ</h2> 
    2626    <nav id="categorytree"> 
    27         <!--{include file="`$smarty.const.SMARTPHONE_TEMPLATE_REALDIR`frontparts/bloc/category_tree_fork.tpl" children=$arrTree treeID="categorytreelist"}--> 
     27        <!--{include file="`$smarty.const.SMARTPHONE_TEMPLATE_REALDIR`frontparts/bloc/category_tree_fork.tpl" children=$arrTree treeID="categorytreelist" display=1 level=0}--> 
    2828 
    2929        <script>//<![CDATA[ 
    30             initCategoryList(); //カテゴリリストの初期化 
    3130        //]]></script> 
    3231    </nav> 
  • branches/version-2_12-dev/data/Smarty/templates/sphone/frontparts/bloc/category_tree_fork.tpl

    r22586 r22602  
    2121 *}--> 
    2222 
    23 <ul<!--{if $treeID != ""}--> id="<!--{$treeID}-->"<!--{/if}-->> 
     23<ul<!--{if $treeID != ""}--> id="<!--{$treeID}-->"<!--{/if}--><!--{if $level > 5 || !$display}--> style="display: none;"<!--{/if}-->> 
    2424<!--{foreach from=$children item=child}--> 
    25     <li<!--{if $child.view_flg == "2" || $child.level > 5 || !in_array($child.category_id, $arrDispID)}--> style="display: none;"<!--{/if}--> class="level<!--{$child.level}--><!--{if in_array($child.category_id, $tpl_category_id)}--> onmark<!--{/if}-->"> 
     25    <li class="level<!--{$child.level}--><!--{if in_array($child.category_id, $tpl_category_id)}--> onmark<!--{/if}-->"> 
    2626        <span class="category_header"></span><span class="category_body"><a rel="external" href="<!--{$smarty.const.ROOT_URLPATH}-->products/list.php?category_id=<!--{$child.category_id}-->"<!--{if in_array($child.category_id, $tpl_category_id)}--> class="onlink"<!--{/if}-->><!--{$child.category_name|h}-->(<!--{$child.product_count|default:0}-->)</a></span> 
     27        <!--{if in_array($child.category_id, $arrParentID)}--> 
     28            <!--{assign var=disp_child value=1}--> 
     29        <!--{else}--> 
     30            <!--{assign var=disp_child value=0}--> 
     31        <!--{/if}--> 
    2732        <!--{if isset($child.children|smarty:nodefaults)}--> 
    28             <!--{include file="`$smarty.const.SMARTPHONE_TEMPLATE_REALDIR`frontparts/bloc/category_tree_fork.tpl" children=$child.children treeID=""}--> 
     33            <!--{include file="`$smarty.const.SMARTPHONE_TEMPLATE_REALDIR`frontparts/bloc/category_tree_fork.tpl" children=$child.children treeID="" display=$disp_child level=$child.level}--> 
    2934        <!--{/if}--> 
    3035    </li> 
  • branches/version-2_12-dev/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Category.php

    r22595 r22602  
    3737    // }}} 
    3838    // {{{ functions 
     39    public $arrParentID; 
    3940 
    4041    /** 
     
    133134        $arrTree = $objCategory->getTree(); 
    134135 
    135         $arrCategory = $objCategory->getList(); 
     136        $this->arrParentID = array(); 
    136137        foreach ($arrParentCategoryId as $category_id) { 
    137138            $arrParentID = $objCategory->getTreeTrail($category_id); 
    138             $arrBrothersID = SC_Utils_Ex::sfGetBrothersArray( 
    139                 $arrCategory, 
    140                 'parent_category_id', 
    141                 'category_id', 
    142                 $arrParentID 
    143             ); 
    144             $arrChildrenID = SC_Utils_Ex::sfGetUnderChildrenArray( 
    145                 $arrCategory, 
    146                 'parent_category_id', 
    147                 'category_id', 
    148                 $category_id 
    149             ); 
     139            $this->arrParentID = array_merge($this->arrParentID, $arrParentID);  
    150140            $this->root_parent_id[] = $arrParentID[0]; 
    151             $this->arrDispID = array_merge($arrBrothersID, $arrChildrenID); 
    152141        } 
    153142 
  • branches/version-2_12-dev/data/class/util/SC_Utils.php

    r22597 r22602  
    10931093    } 
    10941094 
    1095     /* 階層構造のテーブルから与えられたIDの兄弟を取得する */ 
    1096     function sfGetBrothersArray($arrData, $pid_name, $id_name, $arrPID) 
    1097     { 
    1098         $max = count($arrData); 
    1099  
    1100         $arrBrothers = array(); 
    1101         foreach ($arrPID as $id) { 
    1102             // 親IDを検索する 
    1103             for ($i = 0; $i < $max; $i++) { 
    1104                 if ($arrData[$i][$id_name] == $id) { 
    1105                     $parent = $arrData[$i][$pid_name]; 
    1106                     break; 
    1107                 } 
    1108             } 
    1109             // 兄弟IDを検索する 
    1110             for ($i = 0; $i < $max; $i++) { 
    1111                 if ($arrData[$i][$pid_name] == $parent) { 
    1112                     $arrBrothers[] = $arrData[$i][$id_name]; 
    1113                 } 
    1114             } 
    1115         } 
    1116         return $arrBrothers; 
    1117     } 
    1118  
    11191095    /* 階層構造のテーブルから与えられたIDの直属の子を取得する */ 
    11201096    function sfGetUnderChildrenArray($arrData, $pid_name, $id_name, $parent) 
  • branches/version-2_12-dev/html/user_data/packages/sphone/css/block.css

    r21995 r22602  
    250250    vertical-align: middle; 
    251251} 
     252#categorytree li ul { 
     253    border: none; 
     254    margin: 0; 
     255    padding: 0; 
     256} 
    252257 
    253258#categorytree li:first-child { 
  • branches/version-2_12-dev/html/user_data/packages/sphone/js/category.js

    r22586 r22602  
    1 /*------------------------------------------ 
    2 指定されたノードを、オープンまたはクローズする 
    3 ------------------------------------------*/ 
    4 function openOrClose(tgt){ 
    5     //指定ノードが「hidden」のとき、リストを可視化 
    6     if(tgt.style.visibility == "hidden"){ 
    7         tgt.style.display = "block"; 
    8         tgt.style.visibility = "visible"; 
    9         tgt.style.height = "auto"; 
    10         tgt.style.paddingTop = "0.25em"; 
    11         tgt.style.lineHeight = "1em"; 
    12         tgt.style.opacity = 1.0; 
    13     } 
    14     //指定ノードが「hidden」でないとき、リストを隠す 
    15     else{ 
    16         tgt.style.display = "none"; 
    17         tgt.style.visibility = "hidden"; 
    18         tgt.style.height = "0px"; 
    19         tgt.style.paddingTop = "0"; 
    20         tgt.style.lineHeight = 0; 
    21         tgt.style.opacity = 0; 
    22     } 
    23 } 
    24  
    25 /*------------------------------------------ 
    26 リストープン処理 
    27 ------------------------------------------*/ 
    28 function listopen(lv, num){ 
    29     var tgt = document.getElementsByClassName("level" + lv)[num]; 
    30     //次のレベルをサーチ → 次のレベルのリストをオープンする 
    31     for(var i=0; i < document.getElementsByClassName("level" + (lv+1)).length; i++){ 
    32         var next_tgt = document.getElementsByClassName("level" + (lv+1))[i]; 
    33         //li 
    34         if (next_tgt.parentNode == tgt || next_tgt.parentNode.parentNode == tgt){ 
    35             openOrClose(next_tgt); 
    36         } 
    37     } 
    38     //次のレベルをサーチ → 表示ボタンの状態を変更 
    39     for(var i=0; i < tgt.childNodes.length; i++){ 
    40         var next_tgt = tgt.childNodes[i]; 
    41         //ul 
    42         if(next_tgt.tagName == "UL"){ 
    43             if(next_tgt.style.height == "0px"){ 
    44                 if(event.srcElement.parentNode.className == "category_header plus"){ 
    45                     event.srcElement.innerText = '−'; 
    46                     event.srcElement.parentNode.className = "category_header minus"; 
    47                 } 
    48                 next_tgt.style.height = "auto"; 
    49             } 
    50             else{ 
    51                 for(var i=0; i<next_tgt.parentNode.childNodes.length; i++){ 
    52                     if(event.srcElement.parentNode.className == "category_header minus"){ 
    53                         event.srcElement.innerText = '+'; 
    54                         event.srcElement.parentNode.className = "category_header plus"; 
    55                     } 
    56                 } 
    57                 next_tgt.style.height = "0px"; 
    58             } 
    59         } 
    60     } 
    61 } 
    62  
    63 /*------------------------------------------ 
    64 クリックイベントを設定する 
    65 ------------------------------------------*/ 
    66 function setclickevent(tgt, lv, num){ 
    67     //レベル1以外の時は非表示に 
    68     if(lv!=1){ 
    69         tgt.style.visibility = "hidden"; 
    70         tgt.style.display = "none"; 
    71         tgt.style.height = "0px"; 
    72         tgt.style.lineHeight = 0; 
    73         tgt.style.paddingTop = 0; 
    74         tgt.style.paddingBottom = 0; 
    75         if(tgt.parentNode.tagName == "UL"){ 
    76             tgt.parentNode.style.height = "0px"; 
    77             tgt.parentNode.style.margin = "0"; 
    78             tgt.parentNode.style.padding = "0"; 
    79             tgt.parentNode.style.border = "none"; 
    80         } 
    81     } 
    82     var hasLink_flg; 
    83     if(tgt.childNodes.length){ 
    84         for (var j = 0; j < tgt.childNodes.length; j++) { 
    85             //クリック範囲の拡大 
    86             if(tgt.childNodes[j].tagName == 'A'){ 
    87                 tgt.setAttribute('onclick', 'location.href="' + tgt.childNodes[j].getAttribute('href') + '"'); 
    88             } 
    89             //アコーディオンリストの操作イベント関数を追加 
    90             else if(tgt.childNodes[j].tagName == 'UL'){ 
    91                 //▶を表示し、リストオープン関数を追加 
    92                 var linkObj = document.createElement("a"); 
    93                 linkObj.innerText = '+'; 
    94                 $(tgt).children('span.category_header') 
    95                         .addClass('plus') 
    96                         .append(linkObj); 
    97                 j++; 
    98                 linkObj.parentNode.setAttribute('onclick', 'listopen(' + lv + ',' + num + ')'); 
    99  
    100                 //tgt.setAttribute('onclick', 'listopen(' + lv + ',' + num + ')'); 
    101                 break; 
    102             } 
    103         } 
    104     } 
    105 } 
    106  
    1071/*------------------------------------------ 
    1082初期化 
    1093------------------------------------------*/ 
    1104//level?クラスを持つノード全てを走査し初期化 
    111 function initCategoryList(){ 
    112     var lv = 0; 
    113     //level?クラスを持つノード全てに、クリックイベントを追加 
    114     while(document.getElementsByClassName("level" + (++lv)).length){ 
    115         for (var i = 0; i < document.getElementsByClassName("level" + lv).length; i++) { 
    116             setclickevent(document.getElementsByClassName("level" + lv)[i], lv, i); 
     5$(function(){ 
     6    $("#categorytree li").each(function(){ 
     7        if ($(this).children("ul").length) { 
     8            //▶を表示し、リストオープンイベントを追加 
     9            var tgt = $(this).children('span.category_header'); 
     10            var linkObj = $("<a>"); 
     11            linkObj.text('+'); 
     12            tgt 
     13                .click(function(){ 
     14                    $(this).siblings("ul").toggle('fast', function(){ 
     15                        if ($(this).css('display') === 'none') { 
     16                            tgt.children('a').text('+'); 
     17                        } else { 
     18                            tgt.children('a').text('ー'); 
     19                        } 
     20                    }); 
     21                }) 
     22                .addClass('plus') 
     23                .append(linkObj); 
    11724        } 
    118     } 
    119 } 
     25    }); 
     26}); 
Note: See TracChangeset for help on using the changeset viewer.