我正在尝试实现电子邮件通知。条件是,它应该在当天结束时发布当前发布的内容列表。
对于同样的事情,我使用Rules尝试了几件事情,但却介于两者之间。
任何帮助?
我尝试使用规则,我创建了一个如下规则:
活动:
条件:要比较的数据:[node:field-img-status]
,数据值:Approve
当我尝试添加第二个条件来检查节点是否在24小时内发布时,我无法实现它。当我添加strtotime("-1 day")
时,我收到如下错误:
错误的日期格式。以2017-05-10 08:17:18格式指定日期。
我试过date('Y-m-d h:i:s',strtotime("-1 day"))
但我没有成功。
现在我正在尝试使用Views Rules的另一种方法来实现它,this answer在How to create a Drupal rule to check (on cron) a date field and if passed set field "status" to "ended"?中提出了关于' Source'
的问题。答案 0 :(得分:0)
这就是我实现这个目标的方法:
制作一些视图,列出今天创建的所有节点。
制作一些终点(来自我的模块,请查看:https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_menu/7.x) 它将调用此视图,并获取该节点列表(即使用views_get_view_result:https://api.drupal.org/api/views/views.module/function/views_get_view_result/7.x-3.x),遍历列表,撰写电子邮件并发送。
然后我会设置cron job来在每天结束时调用该终点。
答案 1 :(得分:0)
以下是我如何使其发挥作用的蓝图......
创建过去24小时内发布的所有节点的视图(使用Views)。确保在该视图中包含一个列,以便稍后在电子邮件中为每个节点包含各种数据。
使用Rules创建规则,其中包含“规则循环”的规则操作,其中“列表项”实际上是您希望稍后包含在电子邮件中的节点列表。要创建此规则循环,请对您创建的视图使用Views Rules结合视图显示类型“视图规则”。有关如何使用my answer模块的详细信息,请参阅How to pass arguments to a view from Rules?至“Views Rules”。
对于上一步的规则循环中的每个列表项,您可以访问您创建的视图中每列的所有数据。通过使用这些数据,您可以添加其他规则操作(在同一规则循环内),以发送有关正在处理的节点的相应电子邮件。
显然,上一步为过去24小时内发布的每个节点创建了一个eMail。如果您只有几个节点可能不是一个真正需要担心的问题。但是,如果你有几十个(或更多?)这样的节点,那么你可能想考虑在一个eMail中整合所有这些电子邮件,其中包含(在其eMail主体中)完整的节点列表。
实现此类合并的可能解决方案类似于我对“How to concatenate all token values of a list in a single field within a Rules loop?”的回答中包含的规则示例中显示的内容。在你的情况下,你可以让它像这样工作:
nodes_list_var_for_email_body
。nodes_list_var_for_email_body
。nodes_list_var_for_email_body
的令牌以包含在您的电子邮件正文中的任何位置。使用Rules Once per Day安排日常执行规则。有关此模块的更多详细信息,请参阅my answer至“How to limit the execution of a rule for sending an email to only run once in a day?”。
Voilà,就是这样......