跳转到主要内容
Dan 提交于 29 August 2014
你会想要将本文与Blogorama站点的Drush归档一起使用,该归档可以从2014年奥斯汀Drupal大会上的“用实例来学习Commerce”的演讲页面上下载。

Drupal网站最强大的功能之一是你可以给它添加Drupal Commerce。通过使用一些模块,再花一点点时间,你就可以让任何一个Drupal 7的站点变身为一个财富生产机器——不论你是售卖实体产品还是文件下载,甚或只是想要通过数字内容或访问权限来赚钱。轻易地给一个现有网站启用商务功能,这是一项非常强大的能力,能为你打开意想不到的良机。

付费内容就是这些可能应用中的一个,而本文将使用来自我们数字商业套件(Digital Commerce Suite)中的两个模块:Commerce许可证模块(Commerce License)和Commerce许可证账单模块(Commerce License Billing),引导你向一个现有的博客站点中添加付费内容。在2014年奥斯汀Drupal大会上,我们在“用实例来学习Commerce”的后半部分,浏览了设置一个博客的过程。其操作步骤和演示站点的归档就在这里,这样你可以按照自己的节奏去学习。

目标

正如在那次演讲中所提到的,不要过多地去思考你要完成什么,这一点是很重要的。遵循KISS(Keep It Super Simple 保持超级简单)准则,你不仅可以更多地专注于你的目标,还能避免让你花费太多时间去一次性想出一个整体的解决方案。伴随着这一思想,下面是本次学习的既定目标:

  1. 创建仅限付费订阅者才能查看的内容。
  2. 提供一个供用户选择订阅时长并结算的单独页面。
  3. 订阅会自动续订。

​如何工作?

下面是一个你将要做的事情的快速总览。

  1.  安装并启用模块
  2.  创建内容和产品类型
  3.  配置Commerce许可证和账单
  4.  配置权限
  5.  创建产品
  6.  创建产品显示
  7.  杂项配置
  8.  测试内容和结算

基本的解决方案是这样工作的:读者来到你的站点并决定要订阅。他们点击边栏的一个链接,链接带他们到一个页面,该页面包含了在读者订阅之前你想要显示给他们的内容。页面的底部有一个下拉列表,让他们选择按月、按季或是按年订阅。他们于是选择并点击“添加到购物车”,然后再到购物车中完成结算。

当用户结算时,他们的帐户会自动创建并立即登录。他们购买的产品实际上是一个用户角色的许可证,他们被赋予订阅者的角色,这样他们就能立即查看只有订阅者角色才能查看的所有博客文章了。用户的合约计划会根据他们注册时所选择的订阅选项而自动续订。

安装和启用模块

Commerce核心

安装Drupal Commerce核心包括安装下面的各个模块。这些模块提供核心功能,是任何Commerce解决方案的必要模块。

使用Drush下载:

drush dl commerce rules addressfield

针对本解决方案的Commerce模块及其依赖模块

首先,你需要安装特别用于本解决方案的模块。下面就是你需要下载的这些模块(和模块集合):

  • Commerce许可证(Commerce License) - 包括Commerce许可证规则(Commerce License Role) - 这些模块用于当用户完成交易时赋予他新的角色。
  • Commerce许可证账单(Commerce License Billing) - 处理许可证的自动支付和续订。
  • 实体套件插件(Entity Bundle Plugin) - Commerce许可证的必要模块,允许不同的套件类型有自己的类别。
  • Commerce卡片在册(Commerce Card on File) - 用于Commerce许可证账单产生的重复交易。
  • Commerce立即登录(Commerce Immediate Login) - 这个小小的辅助模块为匿名用户创建帐号并让他们登录。
  • 节点查看权限(Node View Permissions) - 允许定义基于节点套件(类型)的权限。比如,用户可以查看页面类型的节点,但不能查看文章类型的节点。

下面这些是Commerce许可证账单的必要模块:

下面这些你可能已经安装过了:

使用Drush安装:

drush dl commerce_license commerce_license_billing entityreference entity_bundle_plugin commerce_cardonfile node_view_permissions advancedqueue date inline_entity_form views_megarow views_bulk_operations ctools views
Commerce立即登录模块是一个实验沙盒模块。要了解更多有关沙盒的信息,可到drupal.org上查看。要下载并启用,你需要从文档根目录下执行下面的命令:
cd sites/all/modules
git clone --branch master http://git.drupal.org/sandbox/simongeorges/1676742.git commerce_immediate_login
drush -y en commerce_immediate_login
cd ../../..

启用所有模块

使用Drush启用:

drush -y en addressfield rules commerce_cart commerce_checkout commerce commerce_ui commerce_customer commerce_customer_ui commerce_line_item commerce_line_item_ui commerce_order commerce_order_ui commerce_payment_ui commerce_price commerce_product commerce_product_pricing commerce_product_pricing_ui commerce_product_reference commerce_product_ui commerce_license commerce_license_role entityreference entity_bundle_plugin node_view_permissions commerce_payment_example views_ui views commerce_cardonfile commerce_immediate_login commerce_license_billing commerce_custom_product commerce_cardonfile_testing views_bulk_operations views_megarow date advancedqueue rules_ui rules date_api

从模块页面上启用:

如果你需要从模块页面上激活模块,把下面这段代码复制到控制台,你会得到一个高亮的模块列表,那些就是你需要激活的模块(什么是控制台?):

jQuery.each(["addressfield", "rules", "commerce_cart", "commerce_checkout", "commerce", "commerce_ui", "commerce_customer", "commerce_customer_ui", "commerce_line_item", "commerce_line_item_ui", "commerce_order", "commerce_order_ui", "commerce_payment_ui", "commerce_price", "commerce_product", "commerce_product_pricing", "commerce_product_pricing_ui", "commerce_product_reference", "commerce_product_ui", "commerce_license", "commerce_license_role", "entityreference", "entity_bundle_plugin", "node_view_permissions", "commerce_payment_example", 'views_ui', 'views', 'commerce_cardonfile', 'commerce_immediate_login', 'commerce_license_billing', 'commerce_custom_product', 'commerce_cardonfile_testing', 'views_bulk_operations', 'views_megarow', 'date', 'advancedqueue', 'rules_ui', 'rules', 'date_api'], function(idx, item) { jQuery('input[name$="[' + item + '][enable]"]').parent().parent().parent().css('background', 'rgba(240, 255, 0, 0.9)'); });

现在这些都搞定了,就可以开始站点的配置了。

创建内容类型和产品类型

创建订阅产品

你需要创建一个产品类型来保存你的订阅数据。导航到 管理 → 店铺 → 产品 → 产品类型 → 添加产品类型。

在名称中输入“订阅”,然后保存该产品类型。

高级文章内容类型

该解决方案涉及到使用节点查看权限来实现仅限订阅用户才能访问付费内容,要区分付费内容和免费内容,需要新建一个内容类型,用它来存储你的高级内容。

转到 管理 → 结构 → 内容类型 → 添加内容类型。

就本例而言,把名称设置为“高级文章”,描述设置为“给付费订阅者的内容。”

订阅产品的显示

最后,需要一个节点来显示稍后将要创建的产品。

转到 管理 → 结构 → 内容类型 → 添加内容类型。

设置名称为“订阅”,描述为“订阅产品的产品显示。”保存并添加字段。现在,你要添加一个任意标题的产品引用字段。当你在下一个页面中编辑字段的时候,确保你将该字段设为必填,值的数量为无限个,并且设置引用的产品类型为订阅。

添加一个订阅者角色

转到 管理 → 用户 → 权限 → 角色下,创建一个新的角色叫作“订阅者”。这是用户将要获得的角色。

配置Commerce许可证和账单

现在内容和产品类型都创建好了,你需要设置Commerce许可证和Commerce许可证账单。首要任务是创建账单周期类型,接下来是往在上一步中创建的产品里添加许可证信息,然后是配置许可证角色。

配置账单周期类型

为了要提供多种账单选项,你需要创建理想的周期类型。前往 管理→ 店铺 → 配置 → 账单周期类型,再点击“添加账单周期许可证类型”。你将要做的是为每一个你提供的账单周期时长创建一个上述类型。为月度、季度、年度分别创建一个,并确保它们每一个的异步选项都是勾选的。

上述操作一旦完成,你就需要往你的产品类型中添加许可证信息了。

配置Commerce许可证

Commerce许可证模块需要知道你将要把什么产品和行项目类型与许可证关联起来。要配置这项,导航到 管理 → 店铺 → 配置 → 许可证设置。现在勾选你前面创建的产品行项目和订阅产品类型旁边的复选框,保存配置。

现在点击角色标签,再点击订阅旁边的复选框并保存。

如果你去看订阅产品的字段配置,你会看到许可证自动添加了一些额外字段。

下面有一些权限需要配置。

配置权限

设置节点查看权限

首先,节点查看权限模块需要知道你想要让哪些内容类型具有特殊权限。导航到 管理 → 配置 → 内容编写 → 节点查看权限。 勾选上文章和高级文章旁边的复选框,保存配置。

角色权限

接下来,转到 管理 → 用户 → 权限。你将要激活以下权限。

  1. 确保所有角色都有访问结算的权限(以启用匿名结算)。
  2. 授权用户:查看/编辑/删除/创建自己的卡片数据。
  3. 授权用户:查看自己任何类型的订单。
  4. 匿名用户:文章:查看任何内容。
  5. 订阅者:高级文章:查看任何内容。

创建产品

最后,我们想要给用户三个订阅选项:按月、按季和按年订阅。为此,我们需要创建三个产品。转到 店铺 → 产品 → 添加产品 → 创建订阅。在这儿,你将要创建三个产品。标题和SKU是无关紧要的,但是针对本次练习,可以分别输入“月度订阅”,“季度订阅”或“年度订阅”,对于标题也类似填写:“月度订阅”,“季度订阅”和“年度订阅”,价格可以分别填入$9.99,$59.99和$99.99。

在价格字段的下面,你会看到一些附加字段。对于角色,选择你上面创建的角色。对于授权周期,选择“无限期”。到了设置的许可证账单周期类型的地方,选择适合你正在创建产品的恰当的值。对于许可证账单类型,选择“预支付”。

创建产品显示

好了,现在我们已经把Commerce设置完毕,是时候来设置产品显示套件了。当你的访客要订阅博客的时候,产品显示套件负责创建他们将要看到的页面。

  1. 转到:内容 → 添加内容 → 订阅。
  2. 将标题设置为:“今天就订阅!”
  3. 将正文设置为:你的某某选择。
  4. 在产品下面,点击你先前创建的三个产品的SKU旁边的复选框。
  5. 为便于演示可添加一个叫作“订阅”的菜单链接到主菜单上。
  6. 保存。

杂项配置

  1. 如果你添加了Commerce立即登录模块,它应该自动地把一个已有的规则(为匿名订单创建新帐户)修改为了结算完成后立即登录新创建的用户。如果它不工作,你可能需要检查看看该规则的最后一个动作是否是“登录用户(Log in user)”,如果不是,则添加这个动作,并且把数据收集器设置为“account-created”。
  2. 可随时执行下面的操作,来清理产品显示页面的显示:
    1. 在订阅内容类型的显示设置下,确保“显示作者和日期信息”是未勾选的。
    2. 在评论设置下,确保“新内容的默认评论设置”是关闭的。
    3. 你必须更新现有的节点以使它们的评论设置生效。
    4. 导航到订阅内容类型的管理显示界面。在这里你会注意到有消息提示说,你需要到产品类型的管理显示页面,原 因是Commerce把产品类型的控制交付给了实际显示产品的节点页面。点击任何一个链接都会到订阅产品类型的管理显示页面(admin/commerce/products/types/product/display)。
    5. 确保“许可证类型”、“SKU”、“许可证期限”和“角色”都是隐藏的。保存设置。

卡片在册和支付

就演示来说,我们使用的是Commerce自带的默认支付选项,但你可以随时使用支持卡片在册的支付接口。

创建测试博客文章并结算

要测试,只需要创建一篇高级文章。你可以退出,新开一个浏览器,或者建立一个私有浏览会话来查看主页,你会注意到内容不会显示。添加一个订阅到购物车,完成结算流程,再回到主页,你的内容就会显示出来了。

Drupal 版本