> Zencart中文手册 > zencart 模板嵌套
zencart 模板嵌套 

$directory_array = $template->get_template_part($template->get_template_dir(’.css’,DIR_WS_TEMPLATE, $current_page_base,’css’), ‘/^style/’, ‘.css’);

其中 /^style/是个正则表达式,表示程序会自动匹配以style开头的任意CSS文件。所以你在命名CSS的时候,需要满足这个表达式,程序才会加载,同理JS也有自己的规范命名方法。

D:htdocszencartincludestemplatesdigital_chinacommontpl_header.php这个就是 头部的可见元素模板了. 一般来说是从<body>以后开始的内容(不包含<body>);这里需要注意的是图片的路径.从设计那里拿来的模板中,图片路 径一般是 src=’images/aaa.jpg’ ,在模板里要改为 src=’<?php echo DIR_WS_TEMPLATE_IMAGES;?>aaa.jpg’
注意,不需要在aaa.jpg前加 “/”;
中部 main_page

ZEN—CART里的中部不是我们平常意义中header和footer之间的所有。在zencart中,在header和footer之间包含3个部分:left,main_page,right。所以,这里我说的中部,是不包括left和right 两个边栏的。
D:htdocszencartincludestemplatesdigital_chinacommontpl_main_page.php这个是中部的模板文件,包含了对左右两个边栏的调用和后台里各模块的判断,这里需要修改的只是一些中部的HTML大层的代码。

比如页面格式为:

<html>
<body>
<div id=header></div>

<div id=’main’>
<div id=’left’></div>
<div id=’middle’></div>
</div>

<div id=’footer’></div>

那你需要注意修改的就是<div id=’main’>和</div> 2个标签的位置和名称

如果你使用的是默认的模板属性,你可能会发现有很多的banner图片和左右分栏。关于这一点不需要从tpl_main_page.php中修改, 你可以在 [后台->工具->外观控制] 中 将所有不熟悉的栏目文件 全部设置为[左/右 栏目状态: 关](关于这里的具体使用说明,我后面的文章会继续介绍到); 还有[后台->商店设置->布局设置]里,你可以看到

广告显示组 – 边框 banner_box
广告显示组 – 边框 banner_box2
广告显示组 – 边框 banner_box_all

你可以逐个编辑其属性,将值设置为空,这里修改的所有默认为横版的banner图片广告

关于 $header_template = ‘tpl_header.php’; $footer_template = ‘tpl_footer.php’; $left_column_file = ‘column_left.php’; 由于我的页面格局被我分成上,下,左,中 4部分,“中”是默认所有都有的,所以我只定义了上,下,左三个边栏的模板文件。当然,你可以换些其他的名字,或者添加右边栏。

进阶技巧:
$flag_disable_header = true;
$flag_disable_left = true;
$flag_disable_right = true;
$flag_disable_footer = true;

放在各模块的tpl_header.php里,可以分别设置具体的某个模块里,是否显示上,左,右,下边栏。(值为true,表示不显示。为false或者不定义,则按默认全局设置);
require($body_code);
这句话就是输出“中”部页面的模板内容.你可以放在适当的地方控制中部模板出现的位置.

左边栏,column_left.php;

D:htdocsZenCartincludesmodulescolumn_left.php 这个文件类似 D:htdocsZenCartincludestemplatesdigital_chinacommontpl_main_page.php的功能和 写法,实现了左边栏的所有功能。注:由于我的左边栏是分为4个小模块,所以我把4个小模块做成了4个sidebox 并在column_left.php中控制自动载入。可以发现 column_left.php 文件很简单,其实他的作用就是自动读取所有已定义的sidebox,如果其属性中位置为左,并且属性为开,存在对应的模块文件和模板文件,则按其设置好的 顺序,依次输出到 column_left中。详情请看第4步。
左边栏中 sidebox 的添加方法

注意:这个方法不仅仅适用于左边栏,甚至头部文件中的导航菜单和搜索条,登陆条等,都可以通过这个方法来设置。
设置方法 [1,2,3如下]

1.建立一个模块文件,比如我要添加一个销售排行 selling_rank。 那么你应该建立一个文件 selling_rank.php放在 D:htdocsZenCartincludesmodulessideboxesselling_rank.php 里. 此模块的所有程序和sql语句,操作等均写在这个文件中。并且将模板中将要用到的标签变量都赋好值。
2.建立模板文件,注意命名需要和模块文件格式相同,tpl_selling_rank.php,放在 D:htdocszencartincludestemplatesdigital_chinasideboxes 里,其中digital_china是我的整个网站第二套模板的文件夹,你可以按你自己的情况修改.tpl_selling_rank.php相对来说简 单许多了。你需要做的第一步是 $content = ”; 初始化,然后将模板嵌套上程序,并生成所有的HTML代码赋值给 $content;即可。
3.这时候很多朋友可能会问:“那我模板的位置通过什么来控制呢?”,好了,这时候打开后台,如果a,b两步你都正确完成,并且程序没有错误的话,你会在 [后台->工具->外观控制]看到一个新的模块名:sideboxes/selling_rank.php ,下面我们编辑他的属性,
左/右 栏目状态: 这里表示的是,如果此模块被你当做左边栏或右边栏的一个元素时,是否开启。
位置: (单栏忽略该设置): 这里设置此模块是左边栏,还是右边栏。
左/右 栏目排序: 当此模块为左/右 边栏模块的时候,其现实顺序(数值小的,优先显示)
单栏排序: 这里需要说明一下,对于任意模块,都有左右边栏属性,所以,当头文件中出现你添加的模块时,这里就起到作用了。一般来说用的不是很多。
单栏状态: 同左/右栏目状态类似,只是功能只对应单栏。

小窍门:第一次设置模块的时候,模块程序文件可以只写2句话:
require($template->get_template_dir(’tpl_模块名.php’,DIR_WS_TEMPLATE, $current_page_base,’sideboxes’). ‘/tpl_模块名.php’); //指定模板文件

require($template->get_template_dir($column_box_default, DIR_WS_TEMPLATE, $current_page_base,’common’) . ‘/’ . $column_box_default); // 加载显示