国外设计欣赏网站 - DOOOOR.com

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,微信登陆

搜索

[Drupal模块] Drupal7.x、6.x: Commerce模块使用教程指南

  [复制链接]
发表于 1-29-2012 15:20 | 显示全部楼层 |阅读模式

看了 @花水木_Hanamizuki 关于最近的DrupalCon London大会的一些“技术笔记”(原文地址:http://hanamizuki.tw/2011/08/26/drupalcon-london-2011/),得知Drupal E-commerce有了新的电商模块(原来主要是Ubercart)——Commerce模块,因此决定试用一下,找找感觉。本指南将会以连载的形式发出。欢迎朋友们一起来研究和讨论。

最近一直在做电商网站的构建。我认为,电商网站的核心功能就是”卖东西“。所以将产品信息、分类、展示、购物车、订单和在线支付这几个基础功能做好,是大前提。其它功能都是辅助的。现在开源的电商软件,用的最多的可能就是Magento了,还有PrestaShop这个后起之秀。不过我了解的也不多,公司一部分用Magento,另一部分是自己开发的框架。由于本人比较喜欢Drupal,一直想尝试采用Dupal来构建电商网站,至于采用Drupal构建电子商务网站的详细原因,我将会单独写个文章和大家分享。

以前用的最多的是Ubercart,但感觉很多地方还不是特别的好用,配置的项目较多。但不得不承认Ubercart是优秀的模块。我一直希望能找到一个具备基本电商网站功能(不用太全面),便于二次开发和定制的模块。不知Commerce是否能满足我这个需求。

本指南主要分以下几个部分:安装、产品管理、分类管理、购物车、支付和订单。

安装

Commerce模块的地址是:http://drupal.org/project/commerce
嘗鮮 Installation profile URL: 
http://drupal.org/project/commerce_kickstart (感谢Kay.L的补充)

这个模块依赖一些其它的模块,如CTools, Views等,逐个下载和安装挺花时间,因此开发者专门准备了Install Profile,即可以直接下载Kick-start安装包,其中包含了Drupal 7.7、Commerce模块以及其依赖的其它模块。

安装的时候和Drupal的安装没有太大的区别,唯一增加的就是在安装成功后,可以选择是否安装示例数据。示例数据可以让我们清楚的知道商业数据是如何存储、分类和展示的,对于学习和研究非常有帮助。不过这个模块提供的示例数据非常简单,安不安装均可。

数据表

Commerce模块在数据库中创建的表是以commerce_为前缀的。表名分别为:product,
product_type, order, line_item, order_revision, payment_transaction, payment_transaction_revision, customer, customer_profile, customer_profile_revision, checkout_pane, calculated_price, tax_rate, tax_type。
基本上看表名就知道都是做什么的了,是电商网站的基本表结构。国外购物网站的Tax经常单独列出来计算,这点可能和国内的电商网站不太一样。

默认首页

刚安装完的页面,符合Drupal的思想哲学——简洁。因为没有使用Views,所以就是默认的节点列表显示了。购物车也挺简单的,比Ubercart的还要简单些。

不过“简单”并不会难倒我们,使用Views或直接修改模板就可以做出漂亮的首页,这不是主要问题。

产品管理

Product和Product Display

Product是模块增加的一种数据类型,但不是内容类型(content type)。Product Display是一种内容类型。当创建好了Product后,并不会直接显示在前台页面的,需要再创建Product Display节点,并可以指定在此节点中显示哪几个Product。如果与MVC思想相联系的话,Product就是Model, Product Display就是View。

产品有几个基本属性:SKU, Title, 产品图像,价格。遗憾的是产品图象默认只能上传一张。下图是产品信息编辑页面。

正常情况下,一个Product Display对应一个Product,但也可包含多个Product。如果包含了多个Product,则在Product Display节点中,将以下拉框的形式列出所包含的全部Product。如下图所示。

选择其中某个产品时,会Ajax load进所对应的产品图像。但由于Product基础信息中没有”产品描述“这个属性,因此换产品时,下面的描述是不变的,就是Product Display的描述。

这个功能有点像“产品组”的功能,可将同一类型的几个产品打包卖。但是,在点击Add To Cart时,只是将下拉列表中选择的Product添加到购物车中。这可能在有些情况下会略显不便。




在看了Drupal Commerce的官方help wiki站:http://www.drupalcommerce.org/后,决定本连载和它上面的User Guide的大纲保持一致。如下:

  • 安装DC(Installing Drupal Commerce)
  • 产品管理(Products)
  • 购物车和Checkout流程(Cart and Checkout Process)
  • 用户档案(Customer Profiles)
  • 支付(Processing Payments)
  • 管理订单(Managing Orders)
  • 从Ubercart迁移(Migrating from Ubercart Stores)
  • 税金配置(Tax Configuration)
  • 导入产品以及引用节点(Importing Products and Reference Nodes )
  • 产品价格公式(Product Pricing Rules )

大纲按照这个,但里面小节的按排可能会有不同。我会根据自己的实际操作,配置一个简单的e-commerce网站,并记录下流程和所遇到的问题,而不是直接翻译帮助文档,因为我觉得这样对朋友们更有参考价值。由于本人知识所限,必然会有错误和漏洞,欢迎大家批评、指正和补充。

1. 安装DC

在上一篇中介绍了如何安装DC,一种是从头安装(install from scratch),一种是使用将所需模块打包好的Commerce Kickstart。

第一种需要自己先下载一些模块:

  • Address Field
  • Chaos tool suite (依赖Views 3)
  • Entity API (依赖Rules 2)
  • Rules 2
  • Views 3 (可选)

最后安装DC模块即可。

第二种比较简单,比Drupal安装多了一步——选择是否安装示例数据。安装示例数据后,只是多了三个产品和产品展示的示例。

2. 产品管理

2.1 产品类型(Product Types)和产品展示(Product Display)

在系统中,每一个“可卖”的物品都是一个“产品(Product)”。在DC中,Product是一种Entity,默认有如下属性:

  • SKU (产品的全局唯一标识:Stock Keeping Unit的缩写)
  • Product Title (产品名称)
  • Image (产品图像:默认只能上传一个)
  • Price(产品价格:单位是USD)
  • Status(产品状态:有Active和Disable两个状态)

不过,默认的属性显然有点少,我们可以通过Drupal 7的字段管理功能为其增加属性。如何增加会在“产品类型”部分介绍。

产品的分类不是产品的默认属性,即不由DC模块提供。可以使用Drupal的Taxonomy模块来实现。

2.1.1 基础概念

产品类型

产品类型用于存放拥有不同属性和展示形式的产品。比如CD光盘和衣服,属于两种不同的产品类型。CD光盘可能具有DVD/CD,、容量等属性;而衣服有size, color等属性。在DC中,需要为此创建两个不同的产品类型。简单的讲,在网站中要卖多少样东西,就要创建多少个产品类型。每个产品类型可拥有多个产品(Product)。

产品展示

“产品(Product)”创建好后,并没有页面可直接查看产品信息。需要通过“产品展示(Product Display)“功能来实现。产品展示实际上是一种内容类型。每个产品展示的节点可以展示一个或几个产品。我的理解是:产品展示是产品的容器,将产品包装后最终展示给网站访问者。产品展示也可以通过Manage Fields为其增加字段。

如果安装时没有选择创建示例数据,产品展示这个内容类型是不会被创建的,需要手动创建。创建时需要加入一个重要的字段- Product Reference Field (产品引用字段),其值是SKU,用于保存展示哪些产品。如果设置成多值(multi-value),可用逗号将sku分开。

由于产品展示是一种内容类型,所以创建一个产品展示和创建一个节点方法一样,我就不再介绍了。

2.1.2 创建产品类型

我认为,掌握DC的产品管理,最重要的就是要掌握产品类型的概念和用法。DC默认创建的是名为“product”的产品类型,但这个只是示例,实际的电商网站肯定会卖很多不同的产品,只一个“product“太笼统了,所以必然需要创建新的产品类型。接下来,我要创建两个内容类型: CD和Dress (衣服)来看看DC如何管理多种产品。先看看创建后的类型列表,如下图如示:

Drupal Commerce 创建产品类型

新创建的product type都会带有SKU, Title, Price, Status这四个属性,这是由系统定义的。之后,可以通过Manage Fields增加新的属性,下面是CD产品的属性:

  • 容量:Capacity - Integer类型,单位:MB
  • 刻录速度:Record speed - Integer类型,单位:x
  • 重量:Weight (为了不和字段的权重名称重复,使用sweight (shipping weight) - Integer类型,单位:pound
  • 品牌:Brand – Text类型
  • 产品图像:Images – Image类型,最多可上传4张图片。创建时,可以设定一个默认的产品图片。

提示:
每次在创建一个需要设定长度的字段时,系统会提示:

Drupal Commerce 创建字段时的提示

These settings apply to the Brand field everywhere it is used. These settings impact the way that data is stored in the database and cannot be changed once data has been created.
大概意思就是:此字段的设置当表有数据后就不能更改,第一次创建时要小心。

但有一个问题:在随后的字段配置时,还是可以设定最大长度的。可能如果设定值超过创建字段时设定的字符最大长度,会被截断。

创建CD产品类型的过程比较简单,和为Drupal的内容类型创建字段的过程几乎一样,就不再详细说明。下面创建衣服产品类型的实验中,会用到一些高级点的技巧,重点介绍下。

  • 衣服(Dress)的内容类型在原基础上新增属性如下:
  • 型号(size): List (text),值为S, M, L, XL, XXL。由于每件衣服会有多个不同的型号供选择,因此本field设置为Multi-value。
  • 颜色(color): List (text), 值为White, Black, Blue
  • 产品图像(images):直接使用在创建CD时创建的field_images字段即可

需得注意的是,每个字段都有下面这个“ATTRIBUTE FIELD SETTINGS”(属性字段设置),如下图所示。

Drupal Commerce 属性字段设置

如果选中其中的复选框——“Enable this field to function as an attribute field on Add to Cart forms ”,则当使用一个Product Display显示一组Product时,将会把这几个产品的这个属性的值,以列表或radio button的形式列出来;而不像普通的产品那样,只列出产品名。这个功能对于像“衣服”这种有多种属性的产品比较有用,下面以示例来说明其用途。

比如,我现在要在网站上卖“bebe Gold Trim Drape Maxi Dress”这个衣服。此衣服共有三个型号,分别为:S, M, L。我想要实现:在一个产品浏览页面中,当用户选择不同的型号的产品时,显示相对应的衣服图片和价格。

根据这个需求,要创建三个产品(Product),每个产品有独立的SKU和Size:

  • bebe Gold Trim Drape Maxi Dress - S  (SKU:  176543, Size: S)
  • bebe Gold Trim Drape Maxi Dress - M  (SKU: 176544, Size: M)
  • bebe Gold Trim Drape Maxi Dress - L  (SKU: 176545, Size: L)

之后,创建一个Product Display, 名称为:“bebe Gold Trim Drape Maxi Dress”,在其“Product”属性中,将前面创建的三个Product的SKU加入:“176543, 176544, 176545“。保存后,查看这个Product Display,可看到如下图所示的页面:

Drupal Commerce 产品属性选择

这样,在选择Size的下拉框中的对应值后,下面的产品图片和价格都会更换为所对应的型号的Product的图片和价格。还可以选择以Radio Buttons的形式显示,如下图:

Drupal Commerce 产品属性选择

虽然比较ugly一些,不过可以通过模板的定制来美化。

当用户选择了某个型号后并添加至购物车,所对应的产品就添加进购物车中了。

Drupal Commerce 购物车

不过,如果是多个选项会怎样呢?比如,除了Size外,还有Color的限制,那怎么处理?好,下面接着做实验。

我为S号的创建了两个产品:

  • bebe Gold Trim Drape Maxi Dress-S-WHITE
  • bebe Gold Trim Drape Maxi Dress-S-BLACK

然后M号的颜色为:Black, L号的颜色为:Blue。那么,预期效果是:当我选择S号时,可以看到有两个颜色选项;当选择其它两个号时,每个只能显示所对应的一个颜色。

实际测试后,确实到达预期。如图所示:

Drupal Commerce 多种属性

可见,对于一种产品有多个属性的情况,需要为每个属性创建一个Field,并将所有可能出现的值预先填入。在创建产品时,每种组合都要有独立的SKU。最后在为此种产品,创建一个产品展示,并引用所有同种产品。



摘自:方医生 798 $ a* U+ Z0 z! i1 D) v




|2011-2026-版权声明|平台(网站)公约|DOOOOR 设计网 ( 吉ICP备2022003869号 )

GMT+8, 2-14-2025 22:51 , Processed in 0.571287 second(s), 242 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表