Drupal 7 如何创建一个Drupal规则来检查(在cron上)日期字段和是否通过设置字段;“地位”;至;结束;?

Drupal 7 如何创建一个Drupal规则来检查(在cron上)日期字段和是否通过设置字段;“地位”;至;结束;?,drupal-7,drupal-rules,Drupal 7,Drupal Rules,我正在尝试创建一个自定义规则(使用模块),以便每次cron运行时,该规则都会检查我创建的自定义内容类型中的日期字段。如果该日期已过,则我希望将列表小部件从活动设置为结束 这是我在尝试创建此规则时取得的成绩: 将React on event设置为Cron维护任务执行时 添加条件>设置选择要添加的条件进行数据比较>继续 问题是:数据选择器只有站点,无法访问字段数据 你知道我哪里出错了吗?你需要先创建一个规则组件: 转到规则>组件(admin/config/workflow/Rules/Compone

我正在尝试创建一个自定义规则(使用模块),以便每次cron运行时,该规则都会检查我创建的自定义内容类型中的日期字段。如果该日期已过,则我希望将列表小部件从
活动
设置为
结束

这是我在尝试创建此规则时取得的成绩:

  • React on event
    设置为
    Cron维护任务执行时
  • 添加条件
    >设置
    选择要添加的条件
    进行数据比较>继续
  • 问题是:
    数据选择器
    只有
    站点
    ,无法访问字段数据


    你知道我哪里出错了吗?

    你需要先创建一个规则组件:

  • 转到规则>组件(admin/config/workflow/Rules/Components)
  • 然后创建一个新组件,并从选择列表中选择“规则”
  • 设置此组件的名称,然后在下表中选择:
  • 数据类型:文本标记
  • 标签:您想要的名称
  • 机器名称:使用标签的相同名称,但此处仅设置小写和下划线
  • 用法:参数
  • 在组件中添加条件“数据比较”,并选择节点:类型
  • 添加您想要的其他条件
  • 设置所需的操作并保存
  • 现在转到规则(admin/config/workflow/Rules)并创建带有cron维护操作的规则(正如您已经做的那样)
  • 跳转条件部分,并在操作中:
  • 新操作:添加一个变量
  • 值:文本
  • 然后,像要循环的内容类型的机器名一样写入此变量的值(如果需要,可以在下面的部分中更改此变量的名称和机器名)
  • 现在添加另一个操作“按属性获取实体”
  • 实体类型值:节点
  • 属性值:类型
  • 数据选择器:在点8处创建的变量
  • 现在在参数列表中添加一个循环使用“按属性获取实体”提供的变量
  • 在循环中添加一个动作(单击循环行右侧的链接),选择在点2中创建的组件,并传递循环提供的变量
  • 我声明:我不知道它是否有效,但至少它应该指引你走上正确的道路


    对不起,我的英语,我希望你能理解一切:)

    规则条件“Cron维护任务已执行”的问题是,此时无法访问节点对象,因此无法对节点进行任何检查/操作。作为解决方案,使用事件=节点:查看内容,而不是执行事件=Cron维护任务。您可以对任何内容类型保持打开状态,以便当有人访问该网站并打开至少一个页面时,会触发某些操作

    是的,您应该能够通过使用模块来实现所需的功能,但我建议您也将其与模块相结合。有关此模块的一些详细信息(从其项目页面):

    将视图直接作为规则操作和循环提供,以无缝地使用视图结果数据

    前面的引语可能有点晦涩(它可能会让你想“那又怎样,这能帮我什么忙?”)。因此,有关如何使用这些模块向前迈进的更多详细信息:

  • 创建一个视图(使用),这样您就有1个视图结果(行),其中包含要处理的所有节点(与自定义内容类型相关,如果可能,还可以使用日期字段进行过滤)。然而,该视图具有用于后续步骤中所需内容的字段(列),例如节点ID、日期字段,以及可能的其他字段。稍后,您将需要这些视图字段作为您的规则处理的值,“将列表小部件从
    活动
    设置为
    结束
    *”(如您的问题所示)。重要提示:使用“规则”的视图显示类型
  • 删除“添加条件”(在您启动的自定义规则中),而是使用模块使用称为“规则循环”的规则技术,在每个视图结果上迭代规则操作
  • 对于规则循环中的每个迭代步骤,执行规则操作以“完成您的事情”(=将列表小部件从
    活动设置为
    结束)。此时,视图结果的每一列中的所有数据都可以作为所谓的规则参数使用。因此,在这一点上,为循环中正在处理的节点调整列表小部件的值是小菜一碟
  • 或者,您也可以根据自己的想象添加任何额外的规则和条件。通常,您不能或还没有表达为视图过滤器的内容。但是,如果您可以选择使用视图过滤器和额外的规则条件,我建议使用视图过滤器,因为这将减少规则循环中的迭代次数(性能!)
  • 简单,不是吗?