这个视频我们再创建一个可以计划取消发布文章的规则 ... 打开 规则 的管理界面 ... 再打开 组件 ... 我们先创建一个可以取消发布文章的动作组件 ...
添加新组件 ... 选择 动作集 .. 继续 ... 输入名称 ... unpblish article ... 编辑 ... 再输入一个中文名 ... 取消发布文章 ...
选择在这个组件需要处理的数据 ... 数据类型 选择 节点 ... 标签输入 内容 ... 机读名称 ... node ... 继续
添加动作 ... 选择 取消内容发布 ... 内容选择 node ... 然后点击 保存 ...
回到规则管理界面 ... 我们再创建一条可以计划执行取消内容发布的规则 ...
添加新规则 ... 名称输入 schedule_to_unpublish ... 编辑 ... 再输入中文名 ... 计划取消发布文章
触发的事件 选择 保存新的内容以后 ... 点击 保存 ... 我们可以再添加一个事件 ... 添加事件 ... 选择 保存已有内容后 ...
然后在这个规则里我们再添加几个条件 ... 添加条件 ... 选择 内容类型是 ... 选择 文章 ... 然后 保存 ...
再添加一个条件,判断一下用户是否选择了截止日期 ... 如果是,就执行这个规则 ...
添加条件 ... 数据值为空 ... 要检查的数据 可以使用 数据选择器来选择 ... 选择带省略号的 node ... 然后选择再省略号的 field-publish-date ... 这里应该是选择 结束日期 ... 不过我试了下在发布文章的时候,不选择结束日期,也会生成计划取消发布文章的任务.. 任务的执行时间跟发布日期是一样的。
所以这里,我们可以选择 期限 这个值 .. 这个值就是开始日期和结束日期之间的时间值 ... 如果开始日期和结束日期一样的话,这个值应该就会为空 ..
再勾选一下 否定 这个选项 ... 表示当这个期限的值不为空的时候 ...
动作
下面我们再添加动作 ... 点击 添加动作 ... 然后在 Rules scheduler 这里,选择 Schedule component evaluation ...
组件 选择刚才创建的 取消发布文章 ... 继续 ...
计划执行的日期 选择 带引号的 node ... field-publish-date 计划发布日期 .. 然后选择 结束日期 ...
下面我们再配置一个标识符 ...
计划在 取消发布 《 》 ... 在替换匹配模式里,
书名号后面加上内容的标题的占位符 ... [node:title] ... 为了确保让这个标识符是唯一的,在这里我们可以再加上一个内容的 id ... [node:nid] ...
计划取消发布 《 [node:title] ( [node:nid] ) 》
在 内容 这里,选择要计划取消发布的东西 ... 选择 node ... 然后点击 保存 ...
测试
我们可以先打开一个内容 ... 编辑一下 ... 确定选择了 结束的日期 ... 还有发布选项,已经勾选了 已发布 ... 然后点击 保存 .. 保存已有内容,会触发我们创建的取消发布文章的规则 ...
回到 规则 的界面 ... 点击 计划任务 .. 在这里,你可以看到一条要计划执行的任务 .. 取消发布这个文章 ...
我们可以模拟一下 ... 修改一下系统的时间 ...
再回到我们的 Drupal ... 刷新 ... 这样会运行 cron 维护任务 .. 也就会执行我们的计划任务 ... 再刷新一下 ..
在计划任务的列表里,计划取消这个文章的任务就不见了 .. 不过又出现了一个计划发布这个文章的任务 ..
计划的时候是 3 月23 号,但是现在的系统时间是 3月25 号了,计划在过去发布这个文章的任务永远不会被执行 ..
解决这个问题我们可以为计划发布文章的规则里添加一个条件,对比一下计划发布日期和当前网站的日期,如果计划发布日期大于网站当前的日期才会添加计划发布文章的任务 ... 你可以自己去试一下 ...
下面回到内容 ... 你会看到这个内容的发布状态已经变成未发布 了 ...
结束
到现在我们已经创建了可以计划发布和取消发布文章的规则 ... 另外,你可以自己来创建可以删除计划任务的规则 ... 比如当用户去掉了计划发布日期或者结束发布日期 ,在保存内容以后,可以删除之前创建的计划任务。