函数:zen_get_info_page
function zen_get_info_page($zf_product_id)
函数说明:根据产品ID 获得产品类型 在计算出产品的页面地址
备注说明:可缓存优化
由于产品具有很多的产品类型 根据产品ID type_handler
先从产品表查询出产品的类型 然后在根据产品的类型 获取产品配置的type_handler
look up the product type from product_id and return an info page name (for template/page handling)
为模板和页面处理
先从products表查询出products_type
然后从TABLE_PRODUCT_TYPES 查询出 type_handler
最后返回$zp_handler->fields[‘type_handler’] . ‘_info’;
可能返回值
product_info
product_music_info
document_general_info
document_product_info
product_free_shipping_info
分类相关函数
zen_get_categories_name
根据分类ID—-获得分类名字
zen_get_category_name
根据分类ID和语言ID—-获取分类的名字信息
zen_get_category_description
根据分类ID和语言ID—-获取分类的描述信息
【注意区分上面两个函数一个是“categories”,一个是“category”】
zen_get_categories_image
根据分类ID—-获得分类的图片名字–数据库categories.categories_image 字段
zen_get_categories_name_from_product
根据产品ID—-获得分类名字【主要是获取主分类的名字】
实现过程:先从TABLE_PRODUCTS表查找出master_categories_id,然后在从TABLE_CATEGORIES_DESCRIPTION表查找categories_name分类的名字
zen_categories_lookup
【终极函数】根据分类ID,字段名称,语言ID
从TABLE_CATEGORIES和TABLE_CATEGORIES_DESCRIPTION查询分类的任意一个字段
比如 zen_categories_lookup(’10’, ‘parent_id’);
以上学习的是分类相关的6个函数,都是非常基础的函数
产品相关的基础函数
zen_products_id_valid($valid_id)
根据产品ID—-检查产品是否存在,返回bool类型
zen_get_products_virtual($lookup)
检查产品是否是一个虚拟产品,TABLE_PRODUCTS表的products_virtual字段,如果products_virtual等于1表示产品是一个虚拟产品,返回bool类型
【此处我设置成引用格式】表示是附属关系
zen_get_products_allow_add_to_cart($lookup)
检查产品是否被允许添加到购物车,是否被允许添加到购物车是通过产品类型控制的,也就是表的TABLE_PRODUCT_TYPES的allow_add_to_cart字段,如果allow_add_to_cart==‘Y’表示产品类型可以被添加到购物车
查找过程:通过产品ID查找products_type,然后通过products_type 查找allow_add_to_cart
zen_get_product_is_always_free_shipping($lookup)
检查一个产品是否总是免邮费TABLE_PRODUCTS表的product_is_always_free_shipping,如果product_is_always_free_shipping==1 表示免邮费,返回bool类型
zen_get_products_category_id($products_id)
根据产品ID—-获得产品的主master_categories_id,在TABLE_PRODUCTS表,返回一个int类型master_categories_id
此函数和zen_get_categories_name_from_product 类似一个返回 master_categories_id 一个返回categories_name
zen_get_products_description($product_id, $language = ”)
根据产品ID和语言ID,从TABLE_PRODUCTS_DESCRIPTION表中获取products_description描述信息
zen_get_products_name($product_id, $language = ”)
根据产品ID和语言ID,从TABLE_PRODUCTS_DESCRIPTION表中获取products_name名字信息
【上面两个函数是姐妹函数】
【再来看一个兄弟函数】
zen_get_products_image($product_id, $width = SMALL_IMAGE_WIDTH, $height = SMALL_IMAGE_HEIGHT)
根据产品ID,并且指定宽度高度,获取产品的图片信息,从TABLE_PRODUCTS表检索products_image,最终返回一个img的标签。此函数调用了zen_get_products_name获得产品名字,作为图片的alt说明
zen_get_products_manufacturers_id($product_id)
根据产品ID—-获得产品的制造商ID
在产品表TABLE_PRODUCTS中有一个manufacturers_id
zen_get_products_manufacturers_image($product_id)
根据产品ID—-获得产品的制造商图片,在TABLE_PRODUCTS表链接TABLE_MANUFACTURERS表,返回manufacturers_image字段
zen_get_products_manufacturers_name($product_id)
根据产品ID—-获得产品的制造商名字,在TABLE_PRODUCTS表链接TABLE_MANUFACTURERS表,返回manufacturers_name字段
【以上三个函数是一家子】
zen_get_manufacturers($manufacturers_array = ”, $have_products = false)
此函数是用来列举制造商,返回字段manufacturers_id和manufacturers_name,这个函数有两个点说明
1–参数manufacturers_array,如果是一个数组,并且数组中已经存在一些值,那么调用之后会将数据库中查询出来的值,和已经存在的值合并返回.
2.$have_products表示是否和TABLE_PRODUCTS联合起来查询,这样筛选出的制造商保证都是有产品的。
现在一共学习产品的8个函数了
继续开始
zen_products_lookup($product_id, $what_field = ‘products_name’, $language = ”)
联合TABLE_PRODUCTS和TABLE_PRODUCTS_DESCRIPTION两张表检索两张表的任意字段,此函数和zen_categories_lookup函数是姐妹函数
我们的产品总是有库存的,让我们看看库存相关的函数
zen_get_products_stock($products_id)
此函数会触发一个通知,暂时是什么我还不清楚。函数内部查找TABLE_PRODUCTS表的products_quantity字段,最终返回一个int类型的数值。函数内部调用了一个zen_get_prid,作用是从购物车id中解析产品ID,比如下面
下面格式的链接
http://localhost/ZenCart156c/index.php?main_page=product_info&products_id=8:c9f0f895fb98ab9159f51fd0297e236d
产品ID 是products_id=8:c9f0f895fb98ab9159f51fd0297e236d,zen_get_prid函数就是做了一个内部解析。
zen_check_stock($products_id, $products_quantity)
检查我们的库存,是否到达了一个值,根据产品ID查询我们的数据库,获得实际数量,然后减去$products_quantity得到$stock_left,判断$stock_left是否小于0,如果小于0,表示库存剩余量,返回span标签 附加说明消息。
关于新进产品和即将上架产品定义的时间范围
zen_get_new_date_range($time_limit = false)
zen_get_products_new_timelimit($time_limit = false)
获取最新产品的定义 得到时间条件
zen_get_upcoming_date_range()
关于区域zone函数
关于属性选项函数