ZenCart函数-functions_lookups.php

函数: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函数

关于属性选项函数