zen cart 添加一个新的边框

zen cart 的边框(sidebox 或者边栏)是网站导航的重要组成部分。以下是对边框工作机制的一些研究。

安装一个新的边框

最简单的方法是到 zen cart 官网的免费插件网页下载一个名为 Blank Sidebox 的边框插件,下载地址是:http://www.zen-cart.com /index.php?main_page=product_contrib_info&products_id=174。下载完成以后,按照提 示操作即可。

也可以自己手动安装。下面以安装一个 categories_header 的边框为例说明。

Step 1

首先到 /includes/modules/sideboxes/YOUR_TEMPLATE/ 目录下新建一个 categories_header.php 文件,这个文件现在可以为空。它里面的代码将决定边框的逻辑,这么说可能有点抽象,按照我的理解,就是这个文件会根据用户(代码的编写者)的要求,决定呈 现的内容。比如,如果顾客登陆以后,将会呈现一条欢迎信息;如果不登陆,则什么也不显示;又比如,当顾客把商品加到购物车以后,这个边框将显示商品的名 称,数量和价格,等等。

这个步骤完成以后,登陆 zen cart 后台,浏览到 工具/外观控制,应该就可以看到一个新边框。见下图:

zen cart 系统是如何自动把新文件包括到边框外观控制中的?可以打开 /admin/layout_controller.php 文件,这些代码没有仔细研究过,大概的作用是,每当登陆后台,浏览 工具/外观控制 页面的时候,这个文件会重新扫描 /includes/modules/sideboxes 这个目录,如果发现新的文件,就把这个文件名当作边框的名字,插入到 layout_boxes 这个数据库表中,见下图:

ImageHost.org

可以看到已经多了一条 categories_header.php 的数据。

Step 2

然后到 /includes/templates/YOUR_TEMPLATE/sideboxes/ 目录下新建一个对应的 tpl_categories_header.php 文件。之前的 /includes/modules/sideboxes/YOUR_TEMPLATE/categories_header.php 文件决定了:满足什么样的条件,就给顾客呈现不同的内容;而 templates 目录下的 tpl_categories_header.php 文件则决定呈现的具体的内容:比如具体的欢迎信息,是 ‘你好!’还是‘您好!’,是显示顾客的姓,还是名,以及呈现的风格(CSS 样式)等等。

Step 3

下面是需要到 /includes/modules/sideboxes/YOUR_TEMPLATE/categories_header.php 文件中添加代码,以便让它可以调用 /includes/templates/YOUR_TEMPLATE/siedboxes/tpl_categories_header.php 文件中的内容。代码如下(可以参考 zen cart 系统自带的其它边框):

  1. require ( $template ->get_template_dir( 'tpl_categories_header.php' ,DIR_WS_TEMPLATE,  $current_page_base , 'sideboxes' ).  '/tpl_categories_header.php' );  

Step 4

最后如果有必要的话,可以到 /includes/languages/YOUR_LANGUAGE/extra_definitions 目录下新建一个 categories_header_defines.php 文件,里面可以定义一些这个边框将要用到的一些常量,比如,边框的标题,边框里面的一些固定内容,等等。

实战

添加一个边框,当顾客登陆以后,打印一条欢迎信息,这条信息将会包括顾客的名字以及他来自何处。

新建 /includes/modules/sideboxes/YOUR_TEMPLATE/welcome_sidebox.php,文件内容如下:

  1. <?php  
  2. if  (isset( $_SESSION [ 'customer_id' ]) &&  $_SESSION [ 'customer_first_name' ]) {  // 判断顾客是否已经登陆   
  3.     $show_welcome_sidebox  = true;  // 顾客已经登陆,边框将显示   
  4. }  
  5. if  ( $show_welcome_sidebox  == true) {  
  6.     require ( $template ->get_template_dir(  
  7.                                             'tpl_welcome_sidebox.php' ,  
  8.                                             DIR_WS_TEMPLATE,   
  9.                                             $current_page_base ,  
  10.                                             'sideboxes'   
  11.                                         )  
  12.                                             . '/tpl_welcome_sidebox.php'   
  13.                                     );   
  14.     // 包括 templates 目录下的具体边框内容   
  15.     $title  = BOX_HEADING_WELCOME_SIDEBOX;   
  16.     // 边 框的标题,$title 这个变量名不能改变,BOX_HEADING_WELCOME_SIDEBOX 这个常量则在 /includes /languages/YOUR_LANGUAGE/extra_definitions/welcome_sidebox_defines.php 文 件中设置   
  17.     $title_link  = false;  // 确定边框的标题不含超级链接   
  18.     //这将包括 /includes/templates/YOUR_TEMPLATE/common/tpl_box_default_left.php 这个文件,即默认的边框样式 (具体是调用左边框,还是右边框还是单边框文件,由后台外观控制决定。)   
  19.     require ( $template ->get_template_dir(  
  20.                                             $column_box_default ,   
  21.                                             DIR_WS_TEMPLATE,   
  22.                                             $current_page_base ,  
  23.                                             'common'   
  24.                                         )   
  25.                                         . '/'    
  26.                                         . $column_box_default   
  27.                                     );   
  28. }  
  29. ?>  

然后到 /includes/templates/YOUR_TEMPLATE/sideboxes/tpl_welcome_sidebox.php 文件添加具体的欢迎信息,代码如下:

  1. <?php  
  2.     $content  =  '' ;  
  3.     $content  .=  '<h1 class="welcomeSideboxHead">' ;  
  4.     $content  .= WELCOME_SIDEBOX_HEAD_MESSAGE;  
  5.     $content  .=  '</h1>' ;  
  6.     $content  .=  '<p><a href="'    
  7.                             . zen_href_link(FILENAME_ACCOUNT, '''SSL' )   
  8.                             . '" <a href="'    
  9.                             . zen_href_link(FILENAME_ACCOUNT, '''SSL' )   
  10.                             . '">'    
  11.                             . zen_output_string_protected($_SESSION [ 'customer_first_name' ])   
  12.                             . '</a></p>' ;  
  13.     $content  .=  '<p><a href="'    
  14.                             . zen_href_link(FILENAME_LOGOFF, '''SSL' )   
  15.                             . '" <a href="'    
  16.                             . zen_href_link(FILENAME_LOGOFF, '''SSL' )   
  17.                             . '">'    
  18.                             . WELCOME_SIDEBOX_LOGOUT  
  19.                             . '</p>' ;  
  20. ?>  

最后到 /includes/languages/YOUR_LANGUAGE/extra_definitions/ 目录下创建 welcome_sidebox_defines.php 文件,内容如下(定义 tpl_welcome_sidebox.php 文件中要用到的常量)

  1. <?php  
  2. <?php  
  3. define('BOX_HEADING_WELCOME_SIDEBOX''欢迎您!' );  
  4. define('WELCOME_SIDEBOX_HEAD_MESSAGE''您好!' );  
  5. define('WELCOME_SIDEBOX_LOGOUT''退出' );  
  6. ?>  
  7. ?>  

现在登陆后台,浏览到 工具->外观控制,将边框打开:

ImageHost.org

打开首页,没有登陆的状态下,边框没有显示:

登陆以后,边框出现:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值