在这个视频里我们来创建计划任务规则。我们先来创建一个可以计划发布文章的规则 ... 先打开 模块 ... 启用 rules 模块的 Rules Scheduler .... 勾选一下 ... 保存 ...
下面我们再回到规则的管理界面 ... 配置 ... 规则 ... 我们之前创建了一个,文章作者为管理员时发布并推荐到首页 .. 这个规则 ... 可以先禁用掉这条规则 ... 点击 禁用 ... 确定 ...
然后我们再创建一个可以发布内容的组件 ... 点击 组件 ... 添加新组件 ... 选择 动作集 ... 注意,只有包含动作的组件才能被计划执行 ...
输入名称 ... publish article ... 编辑 ... 再输入 发布文章 ...
添加一个变量... 在这个组件里我们要处理的是内容... 所以 ... 数据类型可以选择 节点 ... 标签 ... 内容 ... 机读名称 ... node ...
点击 继续 ...
添加动作 ... 选择 发布内容 ... 然后 保存 ...
下面我们再回到规则的管理界面 ... 来创建一个计划执行的规则 ...
添加新规则 ...
schedule to publish ... 编辑 ... 再输入 计划发布文章 ... 触发的事件 可以选择 保存已有内容后 ... 点击 保存 ... 下面我们可以再添加一个事件 ... 添加事件 ... 选择 保存新的内容以后 ...
这样不管是创建新的内容还是更新已有的内容,都会触发这条规则 ...
在这条规则的动作里,我们可以选择要计划执行的动作 ... 在这个动作里,我们需要设置一下执行这个动作的时间 ... 这个时间是文章类型的内容的 计划发布时间 字段里设置的 ...
如果想要使用这个字段里的值 ... 我们需要先添加一个条件 ... 条件可以是 实体有字段 ... 然后指定 计划发布时间 这个字段 ... 或者,我们也可以设置一个 内容类型是 ... 然后选择文章 ...
点击 添加条件 ... 我们选择 内容类型是 ... 内容是 node ... 内容类型 选择 文章 ... 然后点击 保存 ...
下面我们再添加要计划执行的动作 ... 添加动作 ...
然后在 Rules scheduler 这里,选择 Schedule component evaluation ...
在 组件 这里,选择要计划执行的动作组件 ... 选择 发布文章 ...
点击 继续 ...
在 SCHEDULED EVALUATION DATE 这里,选择任务要执行的时间 ... 这个时间是 计划发布时间 字段里设置的 .. 我们可以使用 数据选择器 来选择这个字段 ..
选择后面带省略号的 node ... 再选择 field-publish-date 字段,再选择这个字段里存储的 起始日期 这个值 ...
下面我们需要设置一下计划任务的识别符 ... 每个计划任务的识别符都要不一样 .. 我们可以在识别符里加上节点的 id ,确保识别符都不一样 ...
输入 计划发布 《 》... 在替换匹配模式这里 ...
在后面的书名号里,我们可以再加上内容标题的占位符 ... [node:title] ... 再加上一个节点 id 的占位符 ... [node:nid] ...
最后,在 内容 这里,选择要计划执行要处理的东西 ... 选择 node ...
然后点击 保存 ..
额外的事件与条件
这样我们就创建好了这个计划执行的规则 ...
另外我们可以再添加一个条件,我们可以设置当文章的发布状态为未发表的时候,才去添加一条计划任务 .. 这样如果用户选择已发表状态的时候,就不用添加计划发布这个文章的任务了 ..
点击 添加条件 ... 选择 数据比较 ...
使用数据选择器,选择带省略号的 node ... 再选择 状态 ... 点击 继续 ... 操作符 选择 等于 ... 数据值 选择 未发布 .. 然后点击 保存 ...
我们再添加一个条件 ,当发布日期字段里的开始日期不为空的时候,才去执行这条规则 ... 添加条件 ...
数据值为空 .. 选择 node ... field-publish-date... value ... 再勾选一下 否定 .. 意思是当开始日期不为空的时候 ..
点击保存 ...
测试
下面我们可以试一下 ... 打开 内容 ... 编辑一下之前发布的内容 ...
在 计划发布时间 这个字段里,我们已经指定了计划发布日期和时间 ... 3月 xx xx
再打开 发布选项 确认一下 .. 这里我们并没有勾选 已发表 ...
然后点击 保存 ...
保存已有内容以后,应该会触发计划发布文章这条规则 ... 生成一个计划任务...
回到 规则 的管理界面 ... 打开计划任务...
你会看到一条计划任务 ... 计划在 xxx 去执行 ... 当到了这个时间以后,网站运行了 cron 维护任务 ... 就会去执行这个任务 ... 也就是发布这个文章 ...
我们可以模拟一下 ... 先修改一下系统的时间 ...
然后再回到 drupal ... 刷新 ... drupal 的 cron 默认会每 3 小时运行一次 ... 运行 cron 的时候,就会执行计划任务里满足条件的任务...
在这个计划任务的列表里,已经没有了刚才的任务... 表示成功的执行了这个任务 ..
我们可以去看一下这个内容 ... 打开内容 ... 你会发现,现在, 这个内容的状态,就会变成了 已成表 ....