论zencart之第一连发:头部修改

Zen Cart 模板、教程、设计、使用交流
版面规则
严禁盗版、侵权的模板下载、讨论,违者封ID、IP。

zencart 发帖图标 论zencart之第一连发:头部修改

帖子happy_pai » 2014-04-05 11:55

所有网站头部的内容几乎都相同,包含logo、欢迎信息、常用链接、搜索框、导航栏等。
zencart为我们配备的头部已经相当齐全了,但以下几点还是美中不足:
一、头部广告
zencart作为一个网店系统,包含了6个广告,每个广告都可以在后台设置分组并配置每个广告。但我认为这完全是多此一举,首先广告无非就是一些图片,zencart将广告图片复杂化了,随机性和点击率这些完全没用,除非你的网店是给别人打广告。其次是广告标签过于复杂又缺乏灵活性。所以我一般都会把这几个广告组删除,包括头部。
二、logo和tagline
logo、tagline和头部广告组成一个logowapper块。有强迫症的我喜欢把不用的代码删的干干净净。广告删掉,两个嵌套判断去掉,taglineWrapper标签去掉,干净多了,tagline可以做欢迎信息,不要时整个都删掉。
三、搜索框
网站的搜索框位置比较随意,头部底部,侧边栏都可以,zencart头部是有搜索框,但它是以侧边栏模块sideboxes/search_header.php形式出现的,在后台的Layout Boxes Controller可以控制,但有些小bug,就是边栏也会出现这个模块,唯一的办法就是将这个模块控制在关闭的边栏显示。比如我们的布局是两栏带左栏,那么可以关闭右栏并将头部搜索控制在右栏显示。然后就是搜索框的样式问题了,zencart有个鼠标放置搜索框默认文字消失的js,这个我很喜欢,但是搜索框的直接写在代码里面确让我讨厌,一般我会删除这些样式代码然后给标签加个class并通过样式控制。蛋疼的时候自己写了个头部搜索框。
代码: 全选
<?php
  $navbarsearch = '<div id="head_search">';
  $navbarsearch .= zen_draw_form('quick_find_header', zen_href_link(FILENAME_ADVANCED_SEARCH_RESULT, '', $request_type, false), 'get',' class="navbar-form" role="search"');
  $navbarsearch .= '<div class="form-group">';
  $navbarsearch .= zen_draw_hidden_field('main_page',FILENAME_ADVANCED_SEARCH_RESULT);
  $navbarsearch .= zen_draw_hidden_field('search_in_description', '1') . zen_hide_session_id();
  $navbarsearch .= zen_draw_input_field('keyword', '', 'class="form-control" placeholder="' . HEADER_SEARCH_DEFAULT_TEXT.'"');
  $navbarsearch .= '</div>';
  $navbarsearch .= zen_image_submit('search.gif',HEADER_SEARCH_BUTTON);
  //$navbarsearch .= zenCssButton('',HEADER_SEARCH_BUTTON,'button');
  $navbarsearch .= '</form></div>';
  echo $navbarsearch;
?>


四、币种选择
zencart的币种选择默认在侧边栏,这些代码整理出来很简单,这里我整理出了三种常用的模式供大家选择:
模式一:下拉选择
代码: 全选
<?php
   if (substr($current_page, 0, 8) != 'checkout') {
      if (isset($currencies) && is_object($currencies)) {
   
        reset($currencies->currencies);
        $currencies_array = array();
        while (list($key, $value) = each($currencies->currencies)) {
         $currencies_array[] = array('id' => $key, 'text' => $value['title']);
        }
   
        $hidden_get_variables = '';
        reset($_GET);
        while (list($key, $value) = each($_GET)) {
         if ( ($key != 'currency') && ($key != zen_session_name()) && ($key != 'x') && ($key != 'y') ) {
           $hidden_get_variables .= zen_draw_hidden_field($key, $value);
         }
        }
      }
      $content .= '<div class="head_currency">';
      $content .= zen_draw_form('currencies_form', zen_href_link(basename(preg_replace('/.php/','', $PHP_SELF)), '', $request_type, false), 'get');
      $content .= BOX_HEADING_CURRENCIES.':'.zen_draw_pull_down_menu('currency', $currencies_array, $_SESSION['currency'], 'onchange="this.form.submit();"') . $hidden_get_variables . zen_hide_session_id();
      $content .= '</form>';
      $content .= '</div>';
      echo $content;
   }
?>

模式二:code单选
代码: 全选
<?php
   if (substr($current_page, 0, 8) != 'checkout') {
      if (isset($currencies) && is_object($currencies)) {
   
        reset($currencies->currencies);
        $currencies_array = array();
        $radio_get_variables = '';
        while (list($key, $value) = each($currencies->currencies)) {
         $currencies_array[] = array('id' => $key, 'text' => $value['title']);
         $radio_variables .= zen_draw_radio_field('currency', $key, ($key ==$_SESSION['currency'] ? 1 : 0), 'id="currency_'.$key.'" onchange="this.form.submit();"').'<label id="currencyLabel_'.$key.'" for="currency_'.$key.'" >'.$key.'</label>';
        }
   
        $hidden_get_variables = '';
        reset($_GET);
        while (list($key, $value) = each($_GET)) {
         if ( ($key != 'currency') && ($key != zen_session_name()) && ($key != 'x') && ($key != 'y') ) {
           $hidden_get_variables .= zen_draw_hidden_field($key, $value);
         }
          
        }
      }
      $content .= '<div class="head_currency">';
      $content .= zen_draw_form('currencies_form', zen_href_link(basename(preg_replace('/.php/','', $PHP_SELF)), '', $request_type, false), 'get');
      $content .= $radio_variables. $hidden_get_variables . zen_hide_session_id();
                                    
      $content .= '</form>';
      $content .= '</div>';
      echo $content;
   }
?>

模式三:符号选择(下面以symbol_left为例)
代码: 全选
<?php
   if (substr($current_page, 0, 8) != 'checkout') {
      if (isset($currencies) && is_object($currencies)) {
   
        reset($currencies->currencies);
        $currencies_array = array();
        $radio_get_variables = '';
       
        while (list($key, $value) = each($currencies->currencies)) {
         $currencies_array[] = array('id' => $key, 'text' => $value['title']);
         if($key !=$_SESSION['currency']){
            $symbol = $value['symbol_left'];
         }
         else{
            $symbol = '<b>'.$value['symbol_left'].'</b>';
         }
         $radio_variables .= zen_draw_radio_field('currency', $key, ($key ==$_SESSION['currency'] ? 1 : 0), 'id="currency_'.$key.'" onchange="this.form.submit();"').'<label id="currencyLabel_'.$key.'" for="currency_'.$key.'" >'.$symbol.'</label>';
        }
        $hidden_get_variables = '';
        reset($_GET);
        while (list($key, $value) = each($_GET)) {
         if ( ($key != 'currency') && ($key != zen_session_name()) && ($key != 'x') && ($key != 'y') ) {
           $hidden_get_variables .= zen_draw_hidden_field($key, $value);
         }
          
        }
      }
      $content .= '<div class="head_currency">';
      $content .= zen_draw_form('currencies_form', zen_href_link(basename(preg_replace('/.php/','', $PHP_SELF)), '', $request_type, false), 'get');
      $content .= $radio_variables. $hidden_get_variables . zen_hide_session_id();
                                    
      $content .= '</form>';
      $content .= '</div>';
      echo $content;
   }
?>

模式三加上些样式就和oscommerce的一样了:
代码: 全选
.head_currency{display:block;}
.head_currency ul li{display:block;float:left;padding:5px;}
.head_currency label{display:block;float:left;border:1px solid #ccc;margin:0 4px;padding:3px;}
.head_currency input{display:none;}


四、头部购物车
zencart头部购物车只是个简单的链接,我觉得头部购物车至少应该显示购物车里面产品个数,甚至应该显示金额和部分产品。好吧,只能自己找代码了,zencart的购物车页面这些都有,在模版下的templates/tpl_shopping_cart_default.php有个$totalsDisplay,搜索找到modules/pages/shopping_cart/header_php.php,里面的
代码: 全选
$_SESSION['cart']->count_contents()
代码: 全选
$currencies->format($_SESSION['cart']->show_total())
分别是购物车数量和购物车总金额了。
我们可以修改头部shopping cart链接了,一般我独立出来不和头部链接放在一起:
代码: 全选
<div id="head_cart">Shopping Cart<a rel="nofollow" href="<?php echo zen_href_link(FILENAME_SHOPPING_CART, '', 'NONSSL'); ?>">Now in your cart: <?php echo $_SESSION['cart']->count_contents(); ?></a>item(s) - <?php echo $currencies->format($_SESSION['cart']->show_total()); ?></div>
happy_pai
普通会员
普通会员
 
帖子: 35
注册: 2011-04-19 15:12
QQ 帐号: 530176577

  • 相关话题
    回复总数
    阅读次数
    最新文章

回到 模板美工



在线用户

正在浏览此版面的用户:没有注册用户 和 0 位游客