关于这个问题和答案:如果产品已经被当前用户购买,该如何标记它?
既然我知道如何以一种让我通知客户以避免顾客购买两种相同产品的情况来“标记”商品,那么还有一个问题:我现在该如何标记或“标记”所有的产品,这些产品在商店添加了展板功能之前就已经购买过了?
发布于 2017-07-10 11:31:44
如果您可以想出一种方法来创建一个视图,该视图包含每个产品和实际购买该产品的用户的一行,并且没有用这个“已购买”标志标记,那么您可以使用该视图作为解决问题的实际解决方案的一部分。在这种情况下,您可以通过使用VBO与规则模块的集成来使其工作,详见下文。
创建一个(相当基本的)规则组件来标记用户的产品。以下是规则导出格式(处理节点而不是产品)中此类组件的一个变体:
{ "rules_flag_node_by_a_user" : {
"LABEL" : "Flag node by a user",
"PLUGIN" : "rule",
"OWNER" : "rules",
"REQUIRES" : [ "flag", "rules" ],
"USES VARIABLES" : {
"flagging_user" : { "label" : "Flagging user", "type" : "user" },
"flagged_node" : { "label" : "Node to be flagged", "type" : "node" }
},
"DO" : [
{ "flag_flagnode" : {
"flag" : "your_flag",
"node" : [ "flagged-node" ],
"flagging_user" : [ "flagging_user" ],
"permission_check" : "1"
}
},
{ "drupal_message" : { "message" : "Node flagged for user [flagging-user:name] (uid=[flagging-user:uid])" } }
]
}
}此规则组件使用带有机器名your_flag的标志。在编辑该机器名称以适应您的标志名称之后,您应该能够在您自己的站点中导入此规则(使用需要启用的规则UI )。然后,您可以调整(或克隆)它,使其适合您的产品,而不是节点。
顺便说一句:显示消息的规则动作只是为了在QA测试这个规则时看到它的工作,如果你想要的话,可以随意删除它。
这一步很容易..。只需构建一个适当的视图(所有仍然需要标记的产品)并在VBO视图中转换它。你想要VBO做什么手术的线索是.执行步骤1中的规则组件。请注意:当创建VBO视图时,您确实需要创建一个视图来“列出商业产品”。
如果您的规则组件(在步骤1中,标记产品而不是节点)的变化不能被选择为要执行的VBO操作,那么可能是因为您需要更改规则组件使用的参数的顺序:使flagged_node (在您的情况下是flagged_product )成为第一个参数。这可能是需要的,因为它是一个包含多个参数的规则组件,而且只有第一个参数将由VBO自动填充。这可能有助于选择规则组件作为您的VBO操作。
如果您不熟悉如何使用VBO,请看一看关于在VBO中使用规则组件的视频“,如果您想要更多,也可以观看随后的"使用具有多个参数的规则组件”视频。
注意:同时处理100.000条记录是一个相当大的挑战(内存需求等)。因此,你可能也想看关于"有关VBO设置的更多详细信息“的视频.在你被诱惑使用VBO同时处理它们之前.
如果您对规则不太熟悉(足够/还不熟悉),请查看32 (!)伟大的,免费的视频教程学习规则框架。
https://drupal.stackexchange.com/questions/241323
复制相似问题