网络营销电子商务研究中心  
How to buy the best prescription safety glasses in Canada? Let's study!
Go Back   网络营销电子商务研究中心 > 网站建设 > ZenCart
User Name
Password
 
FAQ Members List Calendar Cheap Glasses

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #1   IP: 112.87.30.213
Old 2016-08-16, 07:30 AM
Icard Icard is offline
初级会员
 
Join Date: 2011-06-05
Posts: 1
Icard 现在声名狼藉
Default Zen Cart 商品类型介绍

一个经常提到的问题是,如何将不同类的商品按不同的格式显示。
例如,音乐类商品和园艺类商品要保存和显示不同的字段。
商品类型定义,正是用于处理该问题。
下面的简要说明,将使用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数据表中添加条件变量的名称。
Reply With Quote
 


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
What are the Server requirements to run Zen Cart? Mackinac Island ZenCart 0 2016-07-17 12:33 AM
有关Zen Cart的一些常用操作 yahoo ZenCart 0 2009-12-01 09:36 PM
How to Install an Zen Cart Template topvip ZenCart 0 2009-08-23 05:35 PM
X-Cart Multiple Input Validation Holes Permit SQL Injection and Cross-Site Scripting topvip X-Cart 0 2009-07-21 10:03 AM
x-cart Template Editing Guide for 4.1.x topvip X-Cart 0 2009-04-15 11:42 PM

Prescription-glasses.com offers prescription glasses online at discount prices.
All times are GMT +8. The time now is 11:08 AM.


Powered by vBulletin Version 3.8.7
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.