这本开发指南是为那些想扩展Ubercart功能,以满足自己需要的模块开发者准备的.模块扩展可能包括新的支付网关,配送服务,产品类型等等.本指南将为大家提供Ubercart核心模块中定义的API,介绍有哪些钩子函数,以及如何使用这些钩子函数.如果有漏掉的章节的话,你可以在文档版面中给我们提供相应的建议.
随着Ubercart的日趋成熟,我们将会为不同的Drupal版本提供不同Ubercart支持.使用下面的指南,来确定你所使用的版本
· Drupal 5 - Ubercart 1.x
· Drupal 6 - Ubercart 2.x (仍处于开发阶段)
你可以在http://api.ubercart.org找到更多的文档,这些都是根据模块文件中的注视自动生成的.
为了将你的模块从一个Ubercart版本升级到下一个版本,你可以参看,Ubercart API 升级说明.
相关链接:Think in Drupal http://www.ubercart.org/docs/developer
这些页面,为你提供Ubercart API在不同版本之间的变化,以帮助你对你的模块进行更新。有时候,在同一版本的不同的稳定版之间,会有些改动,但是我们会尽量把这种改动减到最小。但是在大的版本之间进行升级时,你需要考虑很多的变动:我们将尽可能的将它们列到这里,同时也欢迎大家通过页面评论来完善和补充这一文档。
相关链接: Think in Drupal
http://www.ubercart.org/docs/developer/6863/ubercart_api_updates_release
变动索引:
1. hook_calculate_tax() was added
2. 添加了hook_calculate_tax()
添加了hook_calculate_tax()
This hook allows Ubercart to use multiple tax calculation schemes on its orders. The only argument is the entire order object for which the taxes will be calculated.
这个钩子让Ubercart可以对它的订单使用多个税收计算方案。这里面仅有的一个参数就是,所要计算的订单对象/
The hook implementations should return an array of tax line items, which are arrays with the following keys:
钩子函数应该返回一个数组,里面包含了税收行项(line items),里面用到以下键:
· id
· name
· amount
· weight (optional)
Make sure that your module's tax ids are properly namespaced to prevent collisions with other taxes.
确保你模块的税收ids使用了合适的命名空间,以避免与其它的税收冲突。
相关链接: Think in Drupal
http://www.ubercart.org/docs/developer/6867/api_changes_ubercart_13_14
1. 删除了uc_credit.module中的_array_convert()
2. 在uc_credit.module中,添加了uc_credit_default_gateway()
3. uc_recurring_fee_load()不再使用反序列化的数据字段
我们把uc_credit.module中没用的函数_array_convert()删除了。它在核心中有点多余。对于那些使用了该函数的第3方模块,你可以把该函数包含到你的模块中,当然,需要改改函数名称,或者你也可以使用其它方式实现同样的功能
我们向模块中加入了函数uc_credit_default_gateway(),这样就允许模块对于简单的信用卡交易使用默认的支付网关.如果你的模块,需要检查特定支付网关的可用的信用卡交易类型时,这个函数会非常有用.
uc_recurring_fee_load()不再对数据字段反序列化了
周期性收费系统,在对用户收取周期性费用时,允许你将数据存放到一个data列中。当对该列使用加载函数时,它将自动尝试对该列进行反序列化(unserialize),但是在保存该列数据时,却没有进行自动的序列化。对于这种反序列化,如果向数据列中存储一些简单的文本时,在以后的查询时,就会比较麻烦。
解决的方案就是删除了自动的反序列化,对于那些需要序列化的模块,这一功能由它们自己负责。现在,当他们在加载这一列数据时,也要自己进行处理了。
相关链接: Think in Drupal
http://www.ubercart.org/docs/developer/6865/api_changes_ubercart_15_16
Ubercart核心代码遵守Drupal代码标准。第3方的模块,如果想把模块贡献到我们的网站上的话,必须遵守这些标准。
由于我们还在不断完善中,我们将在今后把其它的需求也列到这里。这些应该更多的告诉你,如何使用Ubercart的 方式来修改购物车的功能,而不是使用其它方式(如果存在一个Ubercart钩子供你使用,你却没有使用,即使你使用的是Drupal的钩子函数,我们也会把它看作一种不好的方式)
Ubercart模块的基本结构如下所示:
1. 文件信息
2. 钩子函数: Drupal, TAPIr, Ubercart
3. 回调函数用于菜单项,表单,表格,结算和订单窗格,行项等等.表单函数应该适用下面的顺序: builder, theme, validate, submit.
4. 模块和帮助函数(特定模块的函数,前缀使用_)
附件是一个可以下载的骨架模块.你在开发模块的时候,可以把它当作起点.只需要修改里面的合适的文本,删除不需要的部分,就可以开始编程了!
在下载包中还包括了一个.info文件。你可以在这里参看一下.info文件的格式:http://drupal.org/node/101009。你将注意到里面的双引号是可选的,但是我觉得最好我们都把它带上。(特别对于一些第3方模块中,里面包含标点符号时,最好加上双引号!)
你还会注意到,没有必要使用umlaut来代替U,使用Übercart是德语的用法。如果大家使用Ubercart的话,也没有关系,我们自己有时也用Ubercart。
附件 |
大小 |
skeleton.tar |
4 KB |
· 文档语法
相关链接:http://zhupou.cn
在开发稳定版的同时,我们会尽力把相应的API的更新放到这里。在这些页面所列的修改,就意味着这一变动已经保存在了Bazaar资源库中了,同时也将被以用于下一个稳定版本中去。
相关链接: Think in Drupal
http://www.ubercart.org/docs/developer/6864/minor_release_updates
当编写在线的代码文档时,很难为代码确定一个统一的标准.我们在这里给出一些简单的规则,供大家使用:
· 函数和钩子名称应使用粗体.例如:hook_perm()
· 文件名称应该使用斜体.例如: uc_store.module
· 变量名称名称应使用粗体.例如: $op
· 对变量类型的引用应该使用斜体.例如: string
· 代码样例应该使用PHP标签,以进行高亮显示.对于输入格式设置为PHP的页面,使用pre标签来显示代码样例:<pre style="border: solid 1px #bbb; padding: 5px;"></pre>
· 菜单标题应该使用粗体和更大字体。例如:Administer(管理) > Site building(站点构建) > Blocks(区块)
对于钩子文档,当你使用表格来显示键值时,这里有一组CSS class集供你使用。(当然,你也可以在别的地方使用这一表格)。将页面的输入格式设为Full HTML,对表格使用类"array_keys",对于标题行使用"header",对于键型单元格使用"key",对于数据类型的单元格使用"type",对于描述型单元格使用"value"。对于可选的值,在键的名称后面加一个*,并在整个表格的最下面加上一行,里面包含以下内容,这里使用斜体:*键是可选的。对于可选键的描述中,应该给出当被忽略时,所使用的默认值。
相关链接:Think in Drupal
http://www.ubercart.org/docs/developer/239/documentation_synatx