虽然Zen-cart左右栏都有相关的module放在sideboxes里,但是,有的时候,需要在页面上某个地方单独显示这些box的内容。比如说,我想把Shopping Cart和Currencies的内容显示在页面的头部。这个时候,并不能直接用Zen-cart提供的module;唯有对现有的module进行相关的改造,才能自如的显示内容。

Zen-cart 1.3.8 采用的模板技术比较特殊,/includes/modules里存放的是相关的module文件,负责页面数据的生成;而模板文件则是放在各个模板目录,处理相关页面内容的生成。整个过程更像是对zen-cart的hack,而不是module的制作。

下面就以创建一个页面头部的currencies,来简单说明一下页面module的制作方法,制作完成后的效果如下图所示:

zen-cart_module_make.png

可以参考、对比

/includes/templates/template_default/sideboxes/tpl_search_header.php
/includes/templates/template_default/sideboxes/tpl_search.php

/includes/modules/sideboxes/search_header.php
/includes/modules/sideboxes/search.php

来获得灵感。

按以下三个步骤来制作这个module:

在/includes/modules/sideboxes目录下,新建一个名叫currencies_header.php的文件。

如果需要,在这个文件里可以依照/includes/modules/sideboxes/search_header.php提供的方法来直接操作数据库。

在这里,我们根据/includes/modules/sideboxes/currencies.php来创建文件,主要是把currencies.php里用于sidebox显示的句子删掉:

$title = '<label>' . BOX_HEADING_CURRENCIES . '</label>'; <br />$title_link = false; <br />require($template->get_template_dir($column_box_default, DIR_WS_TEMPLATE, $current_page_base,'common') . '/' . $column_box_default);

这样,我们就不会在调用这个module的时候,调用到用于sidebox里显示的相关语句。

同样,在这个文件里,我们可以根据自己的需要,加入一个module生成数据所需要的所有元素。

新建一个名叫tpl_currencies_header.php的文件到/includes/templates/YourTemplate/sideboxes,为这个module创建单独的显示风格。这里根据你需要放置的地方,对其中的CSS/XHTML代码进行修改即可。用于显示的数据,是从第一步的module里传进来的全局变量。

注意:Zen-cart 1.3.8 里,按习惯用**$content**来存储生成的页面显示代码。

  1. 在/includes/templates/YourTemplate/common文件夹里,到指定的页面模板里,加入相关的显示生成语句。

在这个例子中,因为是要在页首显示这个currencies显示框,则要在tpl_header.php里加入这么一段话就可以调用module生成数据了:

<?php <br />require(DIR_WS_MODULES . 'sideboxes/currencies_header.php'); <br />echo $content; <br />?>

用上面的方法,就不单单可以修改现有的module,还能根据自己的需要,创作更多的module出来。