Zen Cart 商品类型介绍

Zen Cart说明文件,安装指南和使用手册等等。可以回复,不能发新贴。

版主: Jack

版面规则
新手必读栏目。本版面不能发新贴,可以回复

Zen Cart 商品类型介绍

帖子Jack » 2006-10-11 6:09

一个经常提到的问题是,如何将不同类的商品按不同的格式显示。
例如,音乐类商品和园艺类商品要保存和显示不同的字段。

商品类型定义,正是用于处理该问题。

下面的简要说明,将使用v1.2版本中的音乐商品类型作为例子。具体实现,还要根据自己的需求来做调整。

本文将尽量说明原理,如有疑问,请到论坛上提出。

*********************************************



1. 数据库设计

商品类型系统(PTS)使用Zen Cart的基本数据表和可选数据表。
基本数据表包括:PRODUCT_TYPES,PRODUCT_TYPE_LAYOUT,GET_TERMS_TO_FILTER

_PRODUCT_TYPES 数据表

_PRODUCT_TYPES 数据表用于记录当前安装的商品类型的基本信息。包含以下8个字段:

type_id
type_name
type_handler
type_master_type
allow_add_to_cart
default_image
date_added
last_modified


type_id 是自动增值字段,PTS用于和商品类型的其它数据表关联。

type_name 用户定义字段,尽量采用开发小组使用的命名规则。例如在ZC 1.2中,使用“商品 - 普通”来定义标准商品,用“商品 - 音乐”来定义音乐CD的商品类型。还有“文档 - 普通”来定义文档的基本外观,以及“文档 - 商品”来定义用于出售的文档。这些名称位于管理商品页面的下拉菜单中。

type_handler 用户定义字段,用于定义指向商品类型代码的地址。最好定义成类似type_name字段。例如,如果type_name字段为商品-音乐,那么 type_handler就为product_music。为了跨平台兼容,type_handler要使用小写字母。

type_master_type 用于将商品类型连接在一起。主要为了用不同的边框来显示特定商品类型的分类目录。例如,文档类型链接在一起,这样,可以建立一个边框,仅用来显示所有的文档类目录。

allow_add_to_cart 该字段指定仅用于显示的商品类型,该类商品不能添加到购物车。基本的“文档”类型就是个例子。

default_image 保留字段。

date_added/last_modified 仅用于内部编码。


_PRODUCT_TYPE_LAYOUT 数据表

Zen Cart可以在管理页面下,设置商品信息页面上显示的字段,这部分信息保存在CONFIGURATION数据表。由于不同商品类型含不同信息,所以我们使用另一个数据表。

该数据表类似configuration表,含以下字段:

configuration_id
configuration_title
configuration_key
configuration_value
configuration_description
product_type_id
sort_order
last_modified
date_added
use_function
set_function

下面是音乐类商品的一个例子:

INSERT INTO product_type_layout (configuration_title, configuration_key, configuration_value, configuration_description, product_type_id, sort_order, set_function, date_added) VALUES ('显示唱片公司', 'SHOW_PRODUCT_MUSIC_INFO_RECORD_COMPANY', '1', '在商品页面上显示唱片公司 0= off 1= on', '2', '4', 'zen_cfg_select_drop_down(array(array(\'id\'=">\'1\'," \'text\'=">\'True\')," array(\'id\'=">\'0\'," \'text\'=">\'False\'))," ', now());

这样,管理员可以设定是否在商品信息页面显示唱片公司。当然,还需要修改音乐商品信息页面的代码:

if (SHOW_PRODUCT_MUSIC_INFO_RECORD_COMPANY ="=" '1') {
?>





} // SHOW_PRODUCT_MUSIC_INFO_URL


这只是一个例子,参考商品信息页面的代码(参照PRODUCT_TYPE_LAYOUT数据表)


GET_TERMS_TO_FILTER 数据表

该表不算PTS的核心部分,但用于处理新的条件边框。

条件边框根据一些变量来选择商品列表。

厂家边框就是一个例子,该边框根据商品厂家选择商品列表。
例如,显示所有Microsoft的商品。

音乐商品类型增加了两个条件边框,唱片公司和音乐流派

该表中只有一个字段:get_term_name

这是条件边框返回的$_GET变量的名字,这将在后面的代码中说明。


2. 商店后台管理部分的代码修改

admin/categories.php 用于显示和管理分类目录,同时也包含添加新商品的按钮。添加新商品时,categories.php会调用处理文件 [product handler].php。而[product handler]就是保存在product_types数据表中的名字。例如,音乐类型商品的处理文件为 product_music.php。

该处理文件只是个框架,可以直接复制product.php为自定义的处理文件。记住还要建立一个相应的语言文件。
商品处理页面需要另外几个文件,最重要的两个是:
admin/includes/modules/[handler_name]/collect_info.php
admin/includes/modules/[handler_name]/preview_info.php

其中,[handler name]是product_types数据表中的type_handler字段。

这两个文件在商品表中建立新记录,所以如果你的商品类型含有新字段/选项,这里是需要修改最多的地方。

collect_info.php含有输入商品细节的代码,例如:

商品名称
商品描述
商品价格
等等...

preview_info.php 用于将新建的商品数据写入数据库之前的预览。

在admin/includes/modules目录中,还有几个文件可以替代,也就是在admin/includes/modules/[handler name]/目录中,使用相同名字的文件, 视情况使用。

这些文件为:

update_product.php

该代码用于更新各个数据表,以将商品加入数据库。仅当你的商品类型需要在数据库中另外增加字段时,才需要替代该文件。

例如:音乐类型在单独数据表product_music_extra中保存流派类型、唱片公司,所以需要在update.php中添加代码,以保证collect_info.php中的信息能添加到数据表中。

copy_to_confirm.php

在复制商品时用到该代码。如果你的商品类型使用其它数据表保存资料,那么在这里添加代码,以保证数据复制到新商品中。

例如:音乐类型在这里添加代码,将products_music_extra数据表中的数据复制到新商品中。

delete_product_confirm.php

该代码用于删除商品。在这里删除其它数据表中有关该商品类型的数据。

move_product_confirm.php

该代码用于在分类间移动商品,通常不要替代该文件,因为移动仅修改product_id。当然也有可能需要修改。


3. 商店前台的代码修改

在分类中显示商品类型,要做的修改相对比较少。

总的来说,只要提供处理页面来显示商品信息。在新建商品信息页面前,先建立一个新目录/includes/modules/pages/[handler name]_info

复制所有includes/modules/pages/product_info/目录下的文件到includes/modules/pages/[handler name]_info/ 目录。

通常该目录中需要修改的文件只有main_template_var.php

例如:音乐类型在这里添加代码,用来从product_music_extra数据表中读取音乐流派、唱片公司等等信息。

然后需要为新商品类型的商品信息页面建立模板。该模板位于includes/templates/template_default/templates,如果要和核心代码分开,就保存在includes/templates/[你的模板]/templates 。

模板文件必须命名为:

tpl_[handler name]_info_display.php,同样,[handler name]与product_types数据表中的type_handler相同。

当然要在模板中加入新商品类型的新添内容。

很重要的一点,在模板中,通常使用几个常量来定义是否显示某个元素。例如,在标准商品信息页面,SHOW_PRODUCT_INFO_QUANTITY 如果设置为1,将显示库存数量。这些常量保存在数据表product_type_layout中。

最好是为该表中的每个商品类型建立不同的常量。例如,音乐类型使用SHOW_PRODUCT_MUSIC_INFO_QUANTITY替代了SHOW_PRODUCT_INFO_QUANTITY。这样,管理员可以给不同商品类型定制外观。

添加边框

PTS的另外一个重要功能是条件边框可以选择商品列表。你在用厂家边框时可能就知道了,你可以列出指定厂家的商品。

音乐类型增加了两个条件边框:音乐流派和唱片公司。打开音乐流派边框的代码 includes/modules/sideboxes/music_genre.php,可以看到选择的音乐流派的ID会在url中通过$_GET变量调用music_genre_name。为了正确处理,需要自动记录这些条件。前面的数据库部分提到,你可以在get_terms_to_filter数据表中添加条件变量的名称。
头像
Jack
论坛版主
论坛版主
 
帖子: 12265
注册: 2004-12-16 10:04

Re: Zen Cart 商品类型介绍

帖子daimadaquan » 2009-05-25 23:58

收藏起来,好贴子要顶
人在凡尘里,焉能返自然?
头像
daimadaquan
VIP会员
VIP会员
 
帖子: 512
注册: 2009-03-09 17:34
地址: 江苏 南京

Re: Zen Cart 商品类型介绍

帖子daohe » 2009-09-22 17:01

收藏下这个帖子
头像
daohe
高级会员
高级会员
 
帖子: 179
注册: 2009-08-01 13:36

Re: Zen Cart 商品类型介绍

帖子katherlin898 » 2009-09-26 22:40

你好 JACK,
我想把商品分类中的子分类不关闭, 怎样处理代码? 如能尽快回复, 非常感谢
katherlin898
 
帖子: 0
注册: 2009-09-01 19:38

Re: Zen Cart 商品类型介绍

帖子katherlin898 » 2009-10-05 15:12

不回复 问题是什么意思?, 是不想回复, 还是不会?
katherlin898
 
帖子: 0
注册: 2009-09-01 19:38

Re: Zen Cart 商品类型介绍

帖子katherlin898 » 2009-10-05 15:13

要是要钱就说话了.要多少.
katherlin898
 
帖子: 0
注册: 2009-09-01 19:38

Re: Zen Cart 商品类型介绍

帖子ellen » 2009-10-21 0:30

JACK很好呢,给大家回答问题,而且都很详细的呀。我们新手多研究多学习吧。
ellen
新手上路
新手上路
 
帖子: 12
注册: 2009-10-15 2:01

Re: Zen Cart 商品类型介绍

帖子Jack » 2009-10-21 7:53

刚又看到这两个贴子,有时间那就回复下:
katherlin898 写道:不回复 问题是什么意思?, 是不想回复, 还是不会?

没有回复通常就是不知道了。难道还得在每个问题后跟个贴子说我不知道?
或者说有些问题不是一、两句话能说的清楚的,当然也就是目前我没有答案。我不会为了某一个具体问题花一个小时去研究,然后写说明或者代码。
如果是大家都会遇到的问题,花几个小时去解决还是会的。

还有不喜欢回复的贴,就是跑题贴,提出的问题和贴子的标题不相关。新的问题,完全可以自己开个新贴,不要跟到不相关的贴子后面。看看你上面的问题,和原贴有什么关系?

katherlin898 写道:要是要钱就说话了.要多少.

如果你急需解决,论坛的付费栏目下有专门提供zencart服务的公司,只要价格合适,都能找到人的。
Zen Cart - 让每个人拥有自己生意的梦想成真
加入Zen Cart地图 | 恕不回复站内短信提问 | QQ: 3171061
头像
Jack
论坛版主
论坛版主
 
帖子: 12265
注册: 2004-12-16 10:04

Re: Zen Cart 商品类型介绍

帖子hai8216 » 2010-01-10 6:34

那个人很没素质
hai8216
新手上路
新手上路
 
帖子: 9
注册: 2009-09-23 1:28

Re: Zen Cart 商品类型介绍

帖子katherlin898 » 2010-02-22 15:21

你不回复我怎么知道你是不知道呢? 你是先天什么都懂的吗. 发错了贴也不是有意的。 你是先天什么都懂的吗?
katherlin898
 
帖子: 0
注册: 2009-09-01 19:38

下一页

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

回到 新手上路



在线用户

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