Ubercart开发指南

这本开发指南是为那些想扩展Ubercart功能,以满足自己需要的模块开发者准备的.模块扩展可能包括新的支付网关,配送服务,产品类型等等.本指南将为大家提供Ubercart核心模块中定义的API,介绍有哪些钩子函数,以及如何使用这些钩子函数.如果有漏掉的章节的话,你可以在文档版面中给我们提供相应的建议.

随着Ubercart的日趋成熟,我们将会为不同的Drupal版本提供不同Ubercart支持.使用下面的指南,来确定你所使用的版本

·                                 Drupal 5 - Ubercart 1.x

·                                 Drupal 6 - Ubercart 2.x (仍处于开发阶段)

 

你可以在http://api.ubercart.org找到更多的文档,这些都是根据模块文件中的注视自动生成的.

为了将你的模块从一个Ubercart版本升级到下一个版本,你可以参看,Ubercart API 升级说明.

·                         代码标准

·                         ,Ubercart API 升级说明.

·                         Ubercart 1.x开发指南

·                         Ubercart 2.x开发指南

 

开发工具

相关链接:Think in Drupal http://www.ubercart.org/docs/developer

 

Drupal版本:

Ubercart API 的版本更新

这些页面,为你提供Ubercart API在不同版本之间的变化,以帮助你对你的模块进行更新。有时候,在同一版本的不同的稳定版之间,会有些改动,但是我们会尽量把这种改动减到最小。但是在大的版本之间进行升级时,你需要考虑很多的变动:我们将尽可能的将它们列到这里,同时也欢迎大家通过页面评论来完善和补充这一文档。

·                         同一版本的不同稳定版之间的更新

·                         将模块从Ubercart 1.x转化到2.x

 

相关链接: Think in Drupal

http://www.ubercart.org/docs/developer/6863/ubercart_api_updates_release

Drupal版本:

从Ubercart 1.3到1.4的API变动

Index of changes:

变动索引:

1.       hook_calculate_tax() was added

2.       添加了hook_calculate_tax()

hook_calculate_tax() was added

添加了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

Drupal版本:

从Ubercart 1.5 到1.6的API变动

变动索引:

1.       删除了uc_credit.module中的_array_convert()

2.       在uc_credit.module中,添加了uc_credit_default_gateway()

3.       uc_recurring_fee_load()不再使用反序列化的数据字段

删除了uc_credit.module中的_array_convert()

我们把uc_credit.module中没用的函数_array_convert()删除了。它在核心中有点多余。对于那些使用了该函数的第3方模块,你可以把该函数包含到你的模块中,当然,需要改改函数名称,或者你也可以使用其它方式实现同样的功能

向uc_credit.module中添加了uc_credit_default_gateway()

我们向模块中加入了函数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

Drupal版本:

代码标准

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

http://www.ubercart.org/docs/developer/238/coding_standards

同一版本不同稳定版之间的更新

在开发稳定版的同时,我们会尽力把相应的API的更新放到这里。在这些页面所列的修改,就意味着这一变动已经保存在了Bazaar资源库中了,同时也将被以用于下一个稳定版本中去。

·                         从Ubercart 1.3到1.4的API变动

·                         从Ubercart 1.5到1.6的API变动

 

相关链接: Think in Drupal

http://www.ubercart.org/docs/developer/6864/minor_release_updates

Drupal版本:

文档语法

当编写在线的代码文档时,很难为代码确定一个统一的标准.我们在这里给出一些简单的规则,供大家使用:

·                                 函数和钩子名称应使用粗体.例如: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

Drupal版本: