管理产品的库存,可以使用 commerce_stock 模块,安装以后我们可以为每件产品都设置一个库存,根据产品的库存,可以在用户购买产品的时候做出一些反应,比如结账完以后为产品自动扣除一定数量的库存,在产品没货的时候显示提示信息等等。
先安装一下这个模块 ... 在这个地址里可以下载到这个模块 ... 这里我们用 drush 安装 ...
drush dl commerce_stock --select .. 然后回到 drupal 后台,打开模块 .. 在这里会多出一个 commerce stock 区域 ... 点击打开 ...
这里显示的就是 commerce 库存相关的模块 .. 我们勾选一下 commerce simple stock , commerce simple stock rules ,还有 commerce stock api 这几个模块 ...
如果商店里卖的产品跟重量有关,你可以启用 commerce stock decimal formatter 模块 ..
保存设置 ...
启用以后,打开 商店 .. 配置 ... 在这里你可以找到 库存管理 .. 打开 简单库存管理 这个选项卡 ...
找到想要启用库存功能的产品类型 ... 这里我们选择 自行车产品 .. 勾选一下 .. 然后 提交 ...
这样所有的自行车类型的产品的库存默认都会被设置为零 ..
下面我们可以找到一个自行车产品然后添加一个库存 ... 打开 内容 .. 找到 Epic 这个内容 .. 编辑一下 ... 比如我们可以为这个 黑色的 碳纤维 Epic 自行车添加一个库存 ...
编辑 ... 因为我们刚才为自行车产品启用了库存功能,所以在自行车产品内容上,会有一个库存字段 ... 在这里输入这个产品的库存 .. 输入 2 ...
保存产品 ... 然后 再点击 保存 ...
预览
下面我们可以去前台预览一下 ... 之前我们为这辆黑色的碳纤维自行车添加了库存 .. 所以,添加到购物车按钮会有效 ... 但是如果切换成其它的产品 ...
添加到购物车表单按钮会不可用 .. 而且上面写着 out of stock ,没货 ...
因为默认所有的自行车产品的库存都是零,我们并没有为这个红色的碳纤维自行车添加库存 ... 所以这里会显示没货 ... 在浏览产品的时候,会自动触发规则来验证用户当前查看的产品是否有货 ... 如果没有,就会设置这个添加到购物车按钮的状态为不可用 ...
这个按钮上的文字我们可以修改一下 ...
打开 配置 .. 规则 ... 在这里会有一些 Stock 开头的规则,这些规则就是 commerce stock 为我们创建的 ... 找到 Stock: disable add to cart 这条规则 ... 编辑一下 ...
然后再编辑一下这条规则的动作 .. 在 动作设置的文本 这里,我们可以设置当产品没货的时候显示在添加到购物车按钮上的文字 ..
我们改成 没货 .... 在它的下面,可以在按钮上添加一些 css 类,使用这些类你可以设计在没货状态下的添加到购物车按钮的样式 ...
点击 保存一下 ...
再回到产品页面 .. 刷新 ... 切换到红色 ... 在按钮上会显示 没货 ...
再切换到黑色的碳纤维自行车 ... 修改一下要购买的数量 ... 我们可以输入一个大于这个产品库存的数量 ... 比如输入 3 ...
添加到购物车验证
然后点击 添加到购物车 ...
这里会出现一个提示信息 .. 告诉我们只能购物两件这个产品 .. 这是因为这个产品的库存只有两个件 .. 我们要购买的数量超过了产品的库存数 .. 所有会出现提示信息...
这个提示信息也是用规则来设置的 .. 回到 规则 的配置界面 ...
这里的 Stock: validate add to cart 这条规则就是在把产品添加到购物车时验证产品库存的规则 ... 点击 编辑 ..
再编辑一下这条规则的 设置添加到购物车库存检查的结果 这个动作 ..
在用户信息值这里,我们可以设置提示的信息内容 ... 这里用了两个占位符,[commerce-product:title] 会动态的替换成产品标题 ..
[commerce-product:commerce-stock-int] 会显示为产品的库存数 ..
我们可以使用中文修改一下这条信息 ...
不好意思,[commerce-product:title] 最多只能购物 [commerce-product:commerce-stock-int] 件。
保存 ...
回到产品页面 ... 刷新一下 .. 提示信息会用我们设置的中文显示 ..
修改一下要购买的数量 ... 输入 2 .. 添加到购物车 ..
然后完成结账 ....
再回到产品内容页面... 你会看到这辆黑色碳纤维自行车的添加到购物车按钮上也会显示为 没货 ... 因为我们刚才已经买了两辆这样的自行车 ...
完成订单以后,会触发执行规则 ... 扣除掉产品的对应数量的库存 ...