如何使用商业和规则将匿名用户限制为单个产品和数量1? -- commerce 领域 和 rules 领域 drupal 相关 的问题

How to restrict anonymous users to a single product and quantity 1 using Commerce and Rules?


1
vote

问题

中文

我有一个稍微异常的用例,我想允许经过身份验证的用户订购多个产品并使用购物车,但我希望将匿名用户限制在单独购买产品(没有更换批量,没有向购物车添加多个产品)。

我正在使用drupal 7上的商业和规则7.因为我不希望匿名用户访问购物车,我想如果他们尝试访问购物车(我知道这不是最简单的那样的话,我想将它们重定向到结账页面方法,但它足以推动我的目的)。

我尝试创建在事件中触发的规则内容被视为,条件 path具有 cart 的URL别名。但是,此规则不会触发;当我添加路径重定向时操作然后访问购物车路径,我没有重定向。我应该在规则中使用哪个事件进行重定向?或者有一些更好的方法来做到这一点吗?

英文原文

I have a slightly unusual use case in that I want to allow authenticated users to order multiple products and use the shopping cart but I want to limit anonymous users to purchasing products individually (no changing quantities, no adding multiple products to the cart).

I am using Commerce and Rules on Drupal 7. Because I do not want anonymous users to access the cart, I want to redirect them to the checkout page if they attempt to access the cart (I know this is not the most foolproof method, but it is sufficient for my purposes).

I tried creating a rule triggered on the event Content is viewed with the condition Path has URL alias of cart. However, this rule is not triggered; when I add a Path redirect action and then visit the cart path, I am not redirected. What event should I use in Rules to do the redirect? Or is there some better way to do this?

     

回答列表

5
 
vote
vote
最佳答案
 

这些规则可用于限制角色可用的产品的数量和数量。

可以在规则管理中导入。

限制到单一产品:

基本上,在添加到购物车之前,如果匿名,请从购物车中删除现有产品。效果只有最新产品已添加到购物车中。

  { "rules_single_product_order" : {     "LABEL" : "Single product order",     "PLUGIN" : "reaction rule",     "REQUIRES" : [ "rules", "commerce_cart" ],     "ON" : [ "commerce_cart_product_prepare" ],     "IF" : [       { "user_has_role" : {           "account" : [ "site:current-user" ],           "roles" : { "value" : { "1" : "1" } }         }       }     ],     "DO" : [       { "commerce_cart_empty" : { "commerce_order" : [ "commerce_order" ] } }     ]   } }   

限制数量为1:

在订单中,如果匿名,循环在线项并将数量设置为1

  { "rules_restrict_quantity_to_1" : {     "LABEL" : "Restrict quantity to 1",     "PLUGIN" : "reaction rule",     "REQUIRES" : [ "rules", "entity" ],     "ON" : [ "commerce_order_presave" ],     "IF" : [       { "user_has_role" : {           "account" : [ "site:current-user" ],           "roles" : { "value" : { "1" : "1" } }         }       }     ],     "DO" : [       { "LOOP" : {           "USING" : { "list" : [ "commerce-order:commerce-line-items" ] },           "ITEM" : { "list_item" : "Current list item" },           "DO" : [ { "data_set" : { "data" : [ "list-item:quantity" ], "value" : "1" } } ]         }       }     ]   } }   

Anon仍然可以查看推车,但它们将限制在一个产品和数量的1 - 这里是一个优选的解决方案。如果需要,您还可以显示有关注册的好处的信息。

 

These rules can be used to restrict number and quantity of products available by role.

They can be imported in Rules admin.

Restrict to single product:

Basically, before adding to cart, if anonymous, remove existing products from cart. The effect is only the latest product is added to the cart.

{ "rules_single_product_order" : {     "LABEL" : "Single product order",     "PLUGIN" : "reaction rule",     "REQUIRES" : [ "rules", "commerce_cart" ],     "ON" : [ "commerce_cart_product_prepare" ],     "IF" : [       { "user_has_role" : {           "account" : [ "site:current-user" ],           "roles" : { "value" : { "1" : "1" } }         }       }     ],     "DO" : [       { "commerce_cart_empty" : { "commerce_order" : [ "commerce_order" ] } }     ]   } } 

Restrict quantity to 1:

On order presave, if anonymous, loop over the line items and set quantity to 1

{ "rules_restrict_quantity_to_1" : {     "LABEL" : "Restrict quantity to 1",     "PLUGIN" : "reaction rule",     "REQUIRES" : [ "rules", "entity" ],     "ON" : [ "commerce_order_presave" ],     "IF" : [       { "user_has_role" : {           "account" : [ "site:current-user" ],           "roles" : { "value" : { "1" : "1" } }         }       }     ],     "DO" : [       { "LOOP" : {           "USING" : { "list" : [ "commerce-order:commerce-line-items" ] },           "ITEM" : { "list_item" : "Current list item" },           "DO" : [ { "data_set" : { "data" : [ "list-item:quantity" ], "value" : "1" } } ]         }       }     ]   } } 

Anon can still view the cart, but they will be restricted to one product and quantity of 1 - a preferable solution here. You could also show a message about the benefits of registering, if required.

 
 

相关问题

3  是否有可能通过角色限制用户可以购买哪些产品?  ( Is it possible to limit which products users can purchase by role ) 
我有三种产品,a b和c。任何人都可以购买产品a或b,但只有拥有 vip 角色的用户应该能够购买产品c。 如何确保用户如果没有 VIP 角色,则用户不会看到产品C? (如果他们根本无法购买它,这将是最好的,但我将满足于只需隐藏它的解决方案。)我的产品在使用产品显示内容类型的视图中显示。 ...

0  “商业产品属性”和“商务可定制产品”之间有什么区别  ( What is the difference between commerce product attributes and commerce custo ) 
商务产品属性 商业可自定义产品 这两个模块之间的区别是什么?? 我正在从视图表中创建订单,没有每个产品的产品显示。我已将文本字段添加到带有"Commerce可自定义产品" 模块的自定义线项。行项目显示显示字段,但我无法找到如何编辑它。 (在面板上工作BTW。) ...

-1  商业运输 - 计算运费成本作为百分比  ( Commerce shipping calculate the shipping cost as a percentage ) 
我正在寻求按顺序计算运输成本作为每个项目的百分比。 除此之外,我希望有一个额外的送货选项,该选项也是可以添加的统一速率。 因此,送货速度始终是总计的百分比,然后还可以添加额外的统一速率充电。 ...

1  从查看页面回来时,地址菲尔德隐藏  ( Addressfields hide when i come back from review page ) 
我面临几天&amp的问题;试图解决它,但无法通过它得到任何方式。 首先,我认为这是 commerce_postal_filter 模块的问题,但它不是。 所以真正的问题是,当曾经用户点击从回顾页面中的回顾页面返回按钮,从页面中取消消失。 我在结账时有3个步骤 - 订单夏季 账户信息&地址(结算&...

18  Drupal Commerce。基于产品字段值触发运输规则  ( Drupal commerce trigger shipping rules based on product field value ) 
我真的失去了生活的意志,希望有人可以帮助我。 我想根据产品字段值触发"免费送货" 规则,但对于我的生活,无法将免费送货字段暴露给规则。 我已阅读有关将项目带入范围,并创建了一个可以访问该字段的组件。但是,当我尝试将组件添加为我的规则的条件时,我提示输入数据选择器 - 其中似乎似乎在任何地方领导。我认为它想要一个产品...

0  Drupal Commerce。如何只展示适用于所选车辆的产品?  ( Drupal commerce how to show only products suitable for selected vehicle ) 
任何想法如何在带有Drupal Commerce的情况下解决方案? 用户从选择下拉下来选择自己的车辆。车辆由以下属性组成:车辆类型,制造商,年,模型。然后,通过单击任何产品类别,用户在该类别中获取适合当前所选车辆的类别的视图。 在Excel文件中有50000个产品(带独特的SKU),8500个不同的车辆作为CSV(具...

0  商业 - 只需只有一个支付类型隐藏在付款中的单选按钮?  ( Commerce is it possible to hide the radio button on payment select with only on ) 
我刚刚设置了Drupal Commerce(不是Kickstart),我正在使用Commerce PayPal模块,以允许客户支付订单。这是唯一可用的付款方式;但是,PayPal旁边显示了一个单选按钮,就像可以选择的另一个选项(虽然没有)。 如何隐藏此选项?我假设在我错过的地方有一个选项,因为没有标准练习,以便在没有...

2  商业 - 产品显示页面上的主题加入购物车形式  ( Commerce theme add to cart form on product display page ) 
我在D7-22的顶部有一个Drupal Commerce项目设置。我已经覆盖了我的产品显示器的模板文件( 99887660 ),并设法渲染产品字段,以及包含所有属性的加载卡窗体。我知道 <?php print render($content)?> 实际上将呈现 <form> 的属性和加载到购物车按钮,但我想自定义表单...

0  Commerce Paypal-如何更改“站点名称”字符串的“订单”字符串?  ( Commerce paypal how can i change the order no at site name string ) 
我正在使用Commerce PayPal模块将用户重定向到PayPal以支付他们的订单。 但是,当我这样做时,商业向PayPal提供的交易称为 订单#在[站点名称] 但是,在我的网站上,商店只是它的一部分,商店的名称不同于站点的其余部分,所以我想覆盖这个字符串并替换 [Site name] 用我的商店的显式名称...

1  线项显示标题中的SKU  ( Line item displays sku in title ) 
如何隐藏行项目显示中的SKU。 它似乎是"线项标签" 字段的一部分 admin / commerce / config / line-items / product / fields 在视图中也没有选项以改变它。 ...

1  自定义结帐窗格提交  ( Custom checkout pane submission ) 
我正在使用Drupal Commerce(7.x-1.4)+ Commerce优惠券(和旧版本7.x-1.0-beta6) 我正在使用自定义结账窗格来处理我的优惠券兑换(我们有特定的优惠券)并在检查一些东西后手动拨打优惠券兑换函数。 它可以完全正常,除了我无法弄清楚如何确保我的自定义窗格表单提交按钮不会触发整个表单(...

2  如何在Drupal Commerce发送的电子邮件中包含用户订购的用户(行项)的列表?  ( How can i include a list of what a user ordered the line items in an e mail se ) 
我想发送包含具有规则的用户的Drupal Commerce命令(行项)内容的电子邮件。 我尝试修改默认的发送商业提供的订单通知电子邮件(在规则中)。我注意到,有一个 [commerce-order:commerce_line_items] 令牌,但是当我将此插入电子邮件时,我收到了在发送电子邮件时找到的没有行项目的消...

0  多个提交表单和Ajax:选择触发哪个提交按钮  ( Multiple submits form and ajax select which submit button is triggered ) 
因为我找不到将Drupal Commerce窗格分成几种形式的方法(到目前为止,它创建了几个字段集),我必须以相同的形式创建多个提交按钮。但它是始终触发的同一个提交按钮。 我有这两个"表格" : - Field 1.1 - Field 1.2 -> Submit 1 - Field 2.1 ->Submit 2...

3  Drupal 7 Commerce - 我需要设置哪些权限,以便访问特定角色以查看任何管理订单?  ( Drupal 7 commerce what permissions do i need to set to give access to a specif ) 
在Drupal 7 Commerce中,我设置了员工角色以访问和管理商务订单,但即使我拥有所有订单权限检查,它们也在获得访问权限。是否有其他地方我需要查看以启用特定角色的权限? ...

1  如何在发票电子邮件中添加计费信息  ( How can i add billing information in invoice email ) 
我一直在使用Commerce发票7x-10-Alfa3 商业电子邮件7x-2x-dev 可变电子邮件7x-10-alpha -1x 变量7x-22,4-dev HTML 7.x-2.65模块 我想发送一封发票电子邮件,除了订单信息外将包括 (包含在令牌[商业单位:Commerce-Emery-Order-items]...

1  Drupal 7 + Commerce + AddressField从表单标记中删除特定<div>  ( Drupal 7 commerce addressfield remove specific div from form markup ) 
我使用drupal + commerce +地址域,我正在清理结账页表单标记(至少我尝试)。 我熟悉form.inc的主题函数,并使用这个功能删除了一些divs,但是我不知道的一个div是它被定义。 dpm();说它驻留在 { "rules_push_notification" : { ...

0  如何在设置商务运输条件时显示不等于的规则运营商?  ( How do i show a not equals operator for rules while setting up commerce shipping ) 
我正在建立我的商业运输条件,我需要一个不平等的运营商,所以我可以针对所有国际国家。怎么做到这一点? ...

1  商业 - 显示基本价格(MSRP)和折扣(真正的价格)  ( Commerce show a base price msrp and a discount the real price ) 
我有许多产品,我想展示MSRP(有一条线通过它),然后折扣价格(我的商店的实际价格)。 我不想实际折扣产品; "折扣" 价格是系统的实际价格。相当,我想也显示MSRP(向我的客户展示有什么好的交易)。这类似于Amazon.com所做的(它们总是通过它的线路与它的原始价格,旁边是Amazon.com价格)。 什么是一...

2  如何在节点上显示物理维度字段 - product.tpl.php?  ( How to display physical dimension fields on node product tpl php ) 
我正在使用 drupal commerce 模块,我想打印物理维度字段(机器名称:Field_Width)产品详细信息页面上的值。 如何在 node--product.tpl.php 文件中打印物理维度字段值? 我的文件代码如下: <div id="node-<?php print $node->nid; ?>"...

3  商业 - 如何在结账时添加自定义字段以帐户信息  ( Commerce how can i add a custom field to account information on checkout ) 
我正在使用商业,但我不要求客户的计费或送货信息。但是,我确实需要它们提供他们的名字。 由于我有一个字段的用户配置文件中的名称,我希望匿名用户(仅限)提供匿名用户来提供他们的名称。默认情况下,在Commerce 帐户信息窗格要求用户如果匿名,则需要输入其电子邮件地址,并且如果被认证,则隐藏。 这正是我想要的行为,所以...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.