Ecshop中導航欄中使用二級菜單顯示並調用子分類

1:在includes/cls_template.php裏頂部插入分類函數代碼:php

  //經過參數判斷是否存在二級分類css

  function get_subcate_byurl($url)sql

  {ide

  $rs = strpos($url,"category");函數

  if($rs!==false)ui

  {this

  preg_match("/d+/i",$url,$matches);url

  $cid = $matches[0];spa

  $cat_arr = array();orm

  $sql = "select * from ".$GLOBALS['ecs']->table('category')." where parent_id=".$cid." and is_show=1 ORDER BY sort_order ASC, cat_id ASC";

  $res = $GLOBALS['db']->getAll($sql);

  foreach($res as $idx => $row)

  {

  $cat_arr[$idx]['id'] = $row['cat_id'];

  $cat_arr[$idx]['name'] = $row['cat_name'];

  $cat_arr[$idx]['url'] = build_uri('category', array('cid' => $row['cat_id']), $row['cat_name']);

  $cat_arr[$idx]['children'] = get_clild_list($row['cat_id']);

  }

  return $cat_arr;

  }

  else

  {

  return false;

  }

  }

  function get_clild_list($pid)

  {

  //開始獲取子分類

  $sql_sub = "select * from ".$GLOBALS['ecs']->table('category')." where parent_id=".$pid." and is_show=1 ";

  $subres = $GLOBALS['db']->getAll($sql_sub);

  if($subres)

  {

  foreach ($subres as $sidx => $subrow)

  {

  $children[$sidx]['id']=$subrow['cat_id'];

  $children[$sidx]['name']=$subrow['cat_name'];

  $children[$sidx]['url']=build_uri('category', array('cid' => $subrow['cat_id']), $subrow['cat_name']);

  }

  }

  else

  {

  $children = null;

  }

  return $children;

  }

  2:接下來呢,ecshop中的模板文件,也就是thems,找到你本身的模板文件夾,我就使用默認的說好了,打開themesdefaultlibrarypage_header.lbi文件

  找到ecshop的導航條模板文件代碼,也就是如下代碼:

  <div id="mainNav" class="clearfix">

  <li><a href="../index.php"{if $navigator_list.config.index eq 1} class="cur"{/if}>{$lang.home}<span></span></a></li>

  <!-- {foreach name=nav_middle_list from=$navigator_list.middle item=nav} -->

  <li><a href="{$nav.url}" {if $nav.opennew eq 1}target="_blank" {/if} {if $nav.active eq 1}class="cur" {/if} >{$nav.name}<span></span></a></li>

  <!-- {/foreach} -->

  </div>

  在代碼中加入一段調用分類的代碼,位置看你如何構思二級分類的表現,我是直接這樣加的,我是直接使用鼠標移到或移出當前欄目名稱時,更改當前欄目標籤的CLASS名稱和CSS樣式結合達到二級欄目的顯示和隱藏的:

  <div id="mainNav" class="clearfix">

  <li><a href="../index.php"{if $navigator_list.config.index eq 1} class="cur"{/if}>{$lang.home}<span></span></a></li>

  <!-- {foreach name=nav_middle_list from=$navigator_list.middle item=nav} -->

  <li onMouseOver="this.className='menu1'" onMouseOut="this.className='menu2'" class="menu2" id="netxu">

  <a href="{$nav.url}" {if $nav.opennew eq 1}target="_blank" {/if} {if $nav.active eq 1}class="cur" {/if} >{$nav.name}<span></span></a>

  <?php

  $subcates = get_subcate_byurl($GLOBALS['smarty']->_var['nav']['url']);

  if($subcates!=false)

  {

  if(count($subcates)>0)

  {

  if($subcates)

  {

  $i = 1;

  echo "<div class='cnav' id='cnav'>";

  foreach($subcates as $cate)

  {

  if($i % 2 == 0)

  {

  }

  else

  {

  }

  echo "<div class='class_box'>";

  echo "<a class='level_1' href='".$cate['url']."' >".$cate['name']."</a>";

  echo "</p>";

  if($cate['children'])

  {

  foreach($cate['children'] as $subcate)

  {

  echo "<p class='three'>";

  echo "<a href='".$subcate['url']."' class='level_2'>".$subcate['name']."</a>";

  echo "</p>";

  }

  echo "</div>";

  }

  }

  echo "</div>";

  }

  }

  }

  ?>

  </li>

  <!-- {/foreach} -->

  </div>

  3:css樣式

  #mainNav { width:974px; background:url(images/nav_bg.gif) repeat-x; height:38px; border:1px solid #d1d1d1; line-height:38px; }

  #mainNav li { display:inline; list-style:none; list-style-position:outside; text-align:center; font-weight:bold; float:left; }

  #mainNav li a { color:#614F11; text-decoration:none; display:block; border-right:1px solid #d1d1d1; padding:0 30px; }

  #mainNav .menu1 a{ background:url(images/nav_hover.gif) repeat-x; }

  .menu1 { display:block; }

  .menu1 .cnav { display:block; }

  .cnav { min-width:350px; max-width:700px; background:#FFF; z-index:10; position:absolute; display:none; border:3px solid #FFD531; border-top:8px solid #FFD531; text-align:left; padding:10px; }

  #mainNav li .cnav a { font-size:12px; color:#333333; padding:0; text-align:left; margin-left:5px; font-size:12px; border:none; height:30px; line-height:30px; border-bottom:1px solid #ccc; background:none;}

  #mainNav li .cnav a:hover { background:none; text-decoration:underline; color:#FFA500; }

  #mainNav li .cnav p { display:inline; }

  #mainNav li .cnav .three a { font-weight:normal; border:none; height:15px; line-height:15px; margin-top:8px; }

相關文章
相關標籤/搜索