欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

宁皓网 Drupal Rules Drupal7 Rules 自动化操作 有大用

来自  https://ninghao.net/course/798#toc

1)介绍

根据网站上发生的某一些特定的事件,在一定的条件下,去做指定的事情,这就是 Rules 模块的主要功能。

比如当用户登录以后,在网站上显示一条欢迎的信息,这里用户登录就是一个发生在网站上的事件,显示欢迎信息是要做的动作。

再比如,当网站的管理员在发布文章的时候,设置文章的状态为已发布并且推荐到首页。

在这条规则里,设置文章的状态是要执行的动作,发布内容是触发这条规则的事件,用户的角色是管理员,还有内容类型是文章,这些是设置的条件 ,也就是当触发规则的事件发生的以后,在满足了这些设置的条件的时候才会去执行设置好的要执行的动作。

Rules 中文可以翻译成 规则。你可以使用规则模块,根据网站的需求去创建不同的规则 .. 使用规则模块你可以创建出复杂,灵活的交互式的网站应用。而且这些完全都可以通过规则的用户界面来完成,不需要你写一条代码。

有很多其它的模块会基于规则模块来工作,比如我们在后面的课程要讲到的 Commerce 电子商务模块。

还有 flag 标示模块,当用户点击标示的时候可以触发执行规则 ..

Userpoints 用户积分模块 .. 你可以使用规则设置当用户做什么的时候,给用户添加或者扣除积分.

学会使用规则模块来创建规则非常有必要。在这个课程我们会使用一些应用的实例,来了解规则模块。

来自  https://ninghao.net/video/800

准备

2)安装 Rules 与其它常用模块

首先我们要去下载规则模块,你可以在这个地址里 http://drupal.org/project/rules  下载到。复制一下模块的下载的地址,再到 Drupal 的模块管理界面去安装。

这个视频我们用点其它的方法来做这件事 .. 我们可以使用 Drush 来下载并且安装模块。 Drush 是用在 Drupal 上的命令行的工具,也就是你需要输入命令去让它做你想要做的事。

有些时候,使用命令行工具可以节省一些时间 ... 下面来演示一下 ..

在 Mac 上我们可以使用终端工具 ... 先进入到 Drupal 所在的目录 .. 我们已经在这里了 ..

然后输入 drush dl rules ... 这行命令的意思就是去下载 rules 模块 , dl 就是 download 的简称 .. 是下载的意思 ... 按下回车,可以执行这行命令 ..

drush 会去 Drupal 官方的资源库里帮我们找到 rules 模块,把它下载下来,解压以后,放在模块目录的下面 ...

你会看到提示说 ... 成功下载了 rules 模块,这个模块里包含了四个模块 ... rules_scheduler, rules_i18n, rules_admin, rules ...

下面我们再去下载规则模块需要的 entity  http://drupal.org/project/entity   模块 .. 你可以在这个地址里下载到 ... 这里我们仍然使用 drush 来下载 ..

输入 drush dl entity .. 如果回车,drush 会去下载推荐版本的 entity .. 在这行命令的后面,我们再加上一个 --select ...

回车,drush dl entity  --select  这样我们可以选择要下载的版本 .. 我们选择 entity 的开发版 ... 输入对应的序号.. 1 ,然后回车 ..

提供说已经下载好了 entity 模块,这个模块里包含两个模块 ... entity 还有 entity_token ...

我们可以回到 Drupal 的管理界面 ... 点击 模块 .. 在这个模块的列表里 ... 我们可以找到 rules 相关的模块,还有 entity 模块 ..

勾选你想启用的模块 .. 然后点击 保存设置 ,可以启用模块 ... 这个动作我们也可以使用 drush 的命令来完成 ..

回到终端工具 .. 输入 drush en rules,rules_admin ... 这行命令的意思是去启用 rules 模块,还有 rules_admin 模块,rules_admin 模块提供了一个配置 rules 的界面 ..

en 是 enable 的简称,是启用的意思 ... 按下 回车 ..

出现一行提示 ... 我们将要启用 rules,rules_admin,entity,还有 entity_token 模块 ... entity 和 entity_token 是 rules 所需要的模块,所以,在启用 rules 模块的时候,也要同时启用这两个模块 ...

确定要继续吗? 输入 y ... 表示愿意继续 .. 回车 ..

回到 Drupal 的模块管理界面 ... 你会发现 .. 已经启用了 rules ,rules ui ,entity api 还有 entity tokens 模块。

常用模块

下面我们可以再去安装一些常用的模块 .. 回到 终端工具 ..

输入drush dl views,ctools,module_filter,l10n_update ... views 视图模块 .. ctools 视图模块所需要的模块 , 还有 module_filter ,它可以改进模块管理界面,让它变得更友好一些 ... 再输入 l10_update .. 它可以自动到 Drupal 的官方资源库里去查找我们网站上安装的模块的翻译 .. 这样我们就不需要手工去下载导入模块的中文翻译了。

回车 .. 再启用需要的模块 ... drush en views,views_ui,module_filter,l10n_update --yes .. 最后输入两个横线加上 yes , 表示我们确定要启用这些模块 ...

回车 .. 成功以后 .. 回到 Drupal 的后台 .. 我们可以去更新一下模块的中文翻译 ..

打开 配置 .. 翻译 .. 打开 更新 选项卡... 再点击 Update translations ...

(1) 模块界面image.png


2)点配置

image.png

3)点 现在检查更新 下一步就容易知道了 )

这里使用的就是 l10n_update 模块的功能 .. 自动下载并且导入模块的中文翻译 ..

不过有些模块在 Drupal 的官方并没有完整的中文翻译 .. 所以很多时候我们还是需要手工去翻译 ... 规则模块就没有完整的中文翻译 ..

我提前简单的翻译了一下规则模块 ... 我们可以手工导入这个规则模块的中文翻译 ... 点击 导入 ...

选择文件 ... 找到这个课程资料包 00-01 里面的这个翻译文件 .. 导入 ...

完成以后,我们就准备好了规则模块 .. 下面视频再一起来创建我们的第一条规则 ...

来自  https://ninghao.net/video/801

基础

3)创建简单的反应规则 - 只有管理员发布文章时文章状态为已发布并推荐到首页

反应规则,也可以叫做响应规则,就是根据一些特定的事件,让网站去做一些指定的事情,或者说执行某些动作,你也可以设定一些执行这些动作的条件,就是当网站发生某些特定的事件,如果满足了某些条件的时候,那么就让网站去执行某些动作。

比如我们这个视频里要创建的规则是,当保存新的内容以后,如果内容作者的角色是管理员,并且内容的类型是文章,那么,我们让这个内容的状态变化已发布,并且推荐到首页去显示。

下面我们就来创建这条规则。

首先我们可以去改一下文章类型的内容默认的发布状态,点击 结构 ... 内容类型 ... 编辑一下 文章 这个内容类型 ... 打开 发布选项 ...

默认选项这里勾选了 已发表,还有 推荐到首页,先去掉它们 ... 这样在发布文章类型的内容的时候,它的默认的发布状态是,未发布,也不推荐到首页 ... 点击 保存内容类型 ...

正面我们去创建规则 ... 打开 配置 ... 规则 .... 添加新规则 ... 输入这条规则的名称 ... 这个名称也会作为这条规则的机读名称 ...

先用拼音或者英文来定义这个名称 ... 规则的名称一定要清楚的描述它能做什么 ...

publish_and_promote_when_article_author_is_admin

点击 机读名称 后面的编辑 ... 然后我们再定义一下这条规则的中文名 ...

文章作者为管理员时发布并推荐到首页

如果你的网站需要很多规则,你可以为规则添加标签,这样可以方便你找到相关的规则。 我们给这条规则添加一个 发布流程 的标签 ...

触发的事件 这里,我们要选择触发执行这条规则的事件,也就是当网站发生什么的时候,才去执行这条规则。这里我们选择 保存新的内容以后 ... 这样每当有新的内容保存以后,都会去执行我们创建的这条规则 ...

点击 保存 ...

现在你看到的就是规则的配置界面 ... 最上面是触发规则事件 ... 中间是需要满足的条件 ,最下面这块是规则执行的动作...

动作

事件这里,已经有我们最开始选择的 保存新的内容以后 ... 下面我们设置一下规则所执行的动作 ... 点击 添加动作 ...

点开这个下拉菜单 ... 在 节点 这个区域里,我们选择 发布内容 ... 也就是把内容的发布状态设置为 已发布 ...

使用数据选择器,选择 node ... 然后点击 保存 ...

这样我们完成了这条规则里的第一个要执行的动作,发布内容 ... 点击 添加动作,再添加一个动作 ... 同样在节点区域,选择 将内容推荐到首页 ... 使用数据选择器选择 node ... 点击 保存 ...

条件

现在这条规则这里有两个要执行的动作,发布内容,还有推荐到首页 ... 下面我们再配置一下要执行这些动作的条件 ...

在条件这里,点击 添加条件 ... 我们要先判断一下内容作者的用户角色...

选择 用户的角色 ... 在 用户 这里,我们可以使用数据选择器选择要判断的用户 ... 我们要判断的用户是内容的作者 ... 点击这个下拉菜单 ...

选择 node ... 创建的内容 ... 再点击选择 author ... 表示创建的内容的作者 ...

在下面的 角色 这里,选择 administrator ... 这个条件的意思就是,当创建的内容的作者的用户角色是 administrator ,也就是管理员的时候。

点击 保存 ...

下面再添加一个条件,判断一下内容的类型是否是文章 ... 添加条件 ...

在 节点 区域,选择 内容类型是 ...

在内容这里,用数据选择器选择 node ,然后在下面的内容类型这里,选择 文章 ... 这个条件的意思就是,当创建的内容的类型是文章的时候 ...

点击 保存 ... 现在我们这条规则就能正常使用了 ... 下面可以去验证一下 ....

点击 添加内容 ... 选择 文章 ... 随便添加个标题 ... 无耻之徒 ... 一部很好看的美剧 :)

注意在内容下面的 发布选项 这里 ... 你可以看到,默认并没有勾选 已发布,还有推荐到首页 ...

当我们点击 保存 保存以后,会触发一个事件,也就是保存内容以后 ... 我们创建的规则里使用了这个事件,所以会执行这条规则,检查一下内容作者的角色是不是管理员,内容的类型是不是文章,如果满足了这两个条件 ... 会去执行规则里设置的动作,就是设置内容为已发布,并且推荐到首页 ...

点击 保存 ... 我们再打开这个内容的编辑界面看一下 ... 在发布选项里,你会发现,已经勾选了 已发表,还有 推荐到首页 ...

来自  https://ninghao.net/video/802#info

4)在网站中显示提示信息 - 用户登录后显示欢迎信息并提示上次访问网站的时间

这个视频我们再来创建一箱简单的反应规则,当用户登录以后,在网站上显示一个欢迎的信息,并且提示用户上一次访问网站的时间。

点击 配置,规则,添加新规则 ... 先输入规则的机读名称,可以用英文或者拼音 ... display welcome message after user login ...

点击机读名称后面的编辑 ... 再输入它的中文名 ... 用户登录以后显示欢迎信息提醒用户上次访问网站的时间 ...

触发的事件选择 用户已登录 ... 点击 保存 ...

这个规则我们不需要设置执行的条件 ... 可以直接添加想要执行的动作 ... 点击 添加动作 ...

在 系统 这部分选项里,选择 在网站中显示信息 ...

然后在 消息 这里,我们可以输入想要显示的信息的内容 ... 规则自动为我们选择了直接输入的模式 ... 在 替换匹配模式 这里,我们可以选择使用一些占位符 ...(#打开)

在 登录的用户 的下面 ... 我们可以选择用户账户的名称 ... 就是这个 [account:name] ... 它可以动态的替换成当前登录用户的用户名 ... 也就是王皓在登录的时候,这行代码就会显示为王皓 ...

先复制一下 ...

粘贴到上面的 消息 这个文本区域里 ... 再添加点其它的文字 ... 嘿 ![account:name],欢迎回来 :) ... 在消息里我们可以使用简单的 HTML 标签 ... 在这个后面添加一个换行的标签 ... <br>

另起一行,再输入 ... 上次看到你是在 ... 这行文字的后面,我们可以再使用一个占位符,来显示用户上次访问网站的时间 ...

在替换模式这里 .... 找到 上次访问 ... [account:last-access] ... 复制一下 ...

粘贴到上面的消息里 ... 这样我们就配置好了要显示的信息 ... 在这个信息里我们用了两个占位符,他们可以根据当前登录的用户,动态的显示对应的内容 ...

在下面的 消息类型 这里,你可以选择不同的类型 ... 不同的类型可以使用不同的样式来显示消息 ... 默认是 状态 这种类型 ... 另外还有 警告 和 错误 ... 这里我们选择默认的 状态 ...

点击 保存 ...

下面我们可以去试一下 ... 打开另外一个浏览器 ... 我们用 小雪 这个用户登录一下 ... 输入用户名 ... 密码 ... 点击 登录 ....

你会看到,在网页上,会显示一条欢迎的信息 ... 小雪 就是当前登录的这个用户的用户名 ... 下面的时间是当前这个用户在上一次访问这个网站的时间 ...

来自 https://ninghao.net/video/803#toc

5)使用 smtp 为规则配置发送邮件的功能

使用规则我们可以设置在某些事件和条件下去发送邮件给特定的用户。这个视频我们先为规则去配置一下发送邮件的功能,我们可以使用 SMTP 的方式来发送邮件。

首先我们可以去下载 Drupal 的 SMTP 模块,在这个地址里你可以找到这个模块 ... 下面我们用 drush 去下载并且安装这个模块 ...

Mac 用户可以打开终端工具 .. 然后进入到 Drupal 的目录 ... 再输入 drush dl smtp ... 回车 ...

下载好以后,我们再启用这个 smtp 模块 .. drush en smtp --yes ... 回车 ..

启用以后我们可以用 l10n_update 模块去自动更新一下刚刚安装的 smtp 模块的简体中文翻译 ... 这里我们同样可以使用 drush 来做这件事 ..

先输入 drush l10n-update-refresh .. 刷新一下需要更新的列表 ..

然后再输入 drush l10n-update ... 回车 ...

你会看到正在下载并导入 smtp 模块的中文翻译 ...

完成以后,我们可以去配置一下 smtp 模块 ... 回到 drupal 的管理界面 .. 打开 配置 .. 在 系统 区域里,找到 smtp ..

先勾选一下 开启 ... 然后再配置一下 smtp 服务器的信息 ... 我们可以使用 qq 邮箱的 smtp ... 首先你要登录到你的 qq 邮箱,然后在设置里开启 smtp 功能 ..

在 smtp 服务器这里,输入 smtp.qq.com .. 这个就是 qq 邮箱的 smtp 服务器的地址 ..

服务器的端口号,使用默认的 25 .. 加密协议 选择 否 ..

smtp 身份验证,用户名这里就是你的 qq 号 ... 再下面再输入你的 qq 的登录密码 ..

发送方电子邮件地址 ... 输入你的 qq 邮箱的地址 ... 117663444@qq.com ... 注意这个发送方的地址要跟你的网站的电子邮件地址一样 ...

想测试一下能不能正常发送邮件 .. 在发送测试电邮这里输入一个邮箱 ... wanghao@ninghao.net

然后点击 保存设置 ...

会提示启用了 smtp ... 并且成功发送了测试的邮件 ..

我们可以到 wanghao@ninghao.net 这个邮箱里去看一下 ...

在收件箱里,会有一封测试的邮件 ...

在下面的视频里,我们再去创建规则为特定的用户发送邮件 ...

来自  https://ninghao.net/video/804#info

6)文章有新评论时发送邮件通知文章的作者

当有人对文章发表评论的时候,网站自动发送一封通知的邮件给文章的作者,提醒他一下有人评论了他的文章。下面我们来创建这条规则。

添加新规则 ... 先输入规则的机读名称 .. comment notification email ... 点击 编辑 ... 再输入规则的中文名儿 ... 文章有新评论时发送邮件通知文章的作者 ...

触发的事件 ... 选择 在保存新的评论之后 ... 点击 保存 ...

我们可以先设置一下这条规则要执行的动作 ... 添加动作 ... 要做的是发送邮件 ... 在系统这里,找到 发送邮件 ...

下面我们需要分别设置一下邮件的收件人,主题,还有内容。 邮件的收件人的地址,应该是文章的作者的 email ...

先切换到数据选择器 ... 点击这个下拉菜单 ... 选择 comment ... 创建的评论 ... 然后点击 node ... 再找到 author ... 最后再选择 mail ...

意思就是,邮件的收件人的地址是,保存的评论,所属的内容的作者的邮件地址 ...

再配置一下邮件的标题 ... 可以使用直接输入模式来配置这个标题,这样我们可以使用静态的文字,再加上占位符来设置这部分的内容。

在替换模式这里 ... 先找到评论的作者的名称 ... [comment:author] ... 复制一下 ...

粘贴到上面的文本区域 ... 再输入点静态的文字 ... 评论了你的 《 》... 在这个书名号里,我们可以加上评论所属的内容的标题 ...

在替换模式这里,我们可以使用 [comment:node] ... 复制 ... 粘贴到上面 ...

下面再配置一下邮件的内容 ... 复制一下评论内容的占位符 ... [comment:body] ... 可以再加上评论的地址 ... [comment:url]

点击 保存 ...

提醒信息

我们可以再添加一个动作,在网站上显示一条信息,提醒评论的作者成功发布了评论,并通知了文章的作者 ...

添加动作 ... 选择 在网站中显示信息... 用直接输入的模式来配置一下要显示的信息 ... 在 替换匹配模式 这里,你可以复制想要使用的占位符 ...

先复制一下评论的作者的名称 ... [comment:author] ... 回到文本区域 ... 粘贴 ... 再输入 [comment:author] , 你的评论已经发表了,并通知了... 后面我们再用一个评论所属内容的作者的名称这个占位符 ... 这个占位符在替换模式里找不到,不过我们可以直接输入 ... [comment:node:author] ...

点击 保存 ....

条件

现在这条规则做的是,文章如果有新的评论,不管评论的作者是谁,都会发送一封邮件给内容的作者 ... 下面我们可以添加一个条件 ... 设置一下,评论的作者不能是文章的作者 ... 也就是文章作者自己评论自己的内容的时候,不发送邮件给自己 ...

点击 添加条件 ... 选择 数据比较 ... 在 对比的数据 这里,可以使用数据选择器选择要比对的东西 ...

点开这个下拉菜单 ... 选择后面带省略号的 comment ... 表示我们还可以进一步选择 ... 再选择 author ... 点击 继续 ...

然后在 用户比较的数据的值 这里,选择评论所属内容的作者 ... 切换到 数据选择器 ...

点击下拉菜单 ... 选择带省略号的 comment 评论 ... 然后选择 node 节点 ... 再选择 author 作者 ....

在操作符这里,选择 等于 ... 然后再勾选一下最下面的这个 否定 ... 这样这个条件的意思就是,当评论的作者不是评论所属内容的作者的时候 ...

点击 保存 ...

下面我们可以试验一下 ... 打开之前发布的一篇文章 .. 输入一点评论 .... 保存 ... 因为评论的作者和它所属的文章的作者都是王皓 ... 所以没有显示提示信息,也应该不是发送邮件给这个文章的作者王皓 ....

我们再打开用小雪这个帐户登录的 safari 浏览器 .... 打开这个文章 ... 输入点评论 ... 保存 ...

你会看到网站上显示了一条状态信息 .... 同时也会发送邮件通知文章的作者王皓有人评论了它的文章 ...

下面我们可以登录到王皓的邮件再看一下 ... 点击 收件箱 .... 在这里,你会找到评论提醒的邮件 ....

来自  https://ninghao.net/video/805#info


7)让文章作者主动选择是否接收新评论的邮件提醒

前面我们设置了规则,当文章有新评论的时候,发送邮件通知文章的作者。这个视频我们再设置一下这条规则,让文章作者可以主动选择是否愿意接收评论提醒的邮件 ...

方法很简单,我们可以为文章添加一个字段,比如命名为 新评论邮件提醒 ... 然后在规则里添加一个条件,判断一下这个字段的值,也就是看看文章作者在发布文章的时候是否勾选了 新评论邮件提醒 这个字段 ... 如果是,表示作者愿意接收新评论提醒的邮件 ... 如果没有勾选,就不发送提醒的邮件。

先给文章内容添加一个字段 ... 点击 结构 ... 内容类型 ... 点击 文章 后面的 管理字段 ... 先输入字段的机读名称 ... comment_notify ... 编辑 ... 再输入一个中文名 ... 新评论邮件提醒 ...

字段类型选择 布尔值 ... 然后点击 保存 ... 勾选一下 Use field label instead of the "On value" as label ... 使用字段的标签作为标签 ... 然后点击 保存设置 ...

下面我们可以再设置一下,不让这个字段的内容显示在文章的页面上.... 回到 文章 类型 ... 管理显示 ... 找到 新评论邮件提醒 这个字段 ... 把格式 设置为 隐藏 ... 然后点击 保存 ...

再回到规则的配置界面 ... 配置 ... 规则 ... 找到前面视频里创建的 文章有新评论时发送邮件通知文章的作者 这个规则 ... 点击 编辑

添加一个新的条件 ... 点击 添加条件 ...

选择 数据比较 ... 在 对比的数据 这里,使用 数据选择器 来选择要比较的东西 ... 我们要检查一下内容是否勾选了 新评论邮件提醒 字段 ...

点击下拉菜单 ... 选择后面带省略号的 comment ... 再选中带省略号的 node ... 再找到我们之前添加的 新评论邮件提醒 这个字段 ... 就是这个 field-comment-notify

点击 继续 ... 操作符 选择 等于 ... 下面的数据值这里,勾选一下 数据值 ... 如果我们选择的要对比的数据的类型是布尔值 ... 也就是只有 是 或者 否,或者叫 真 或者 假 ... 那么在这里的 数据值,就只会出现一个 数据值 的选项 ... 勾选上,就表示值为 是,不勾选表示值为 否 ...

整个这个条件的意思就是,判断评论所属内容的 新评论邮件提醒 字段里的值是否等于 真 ... 也就是文章作者勾选了 新评论邮件提醒 这个字段 ...

点击 保存 ...

下面我们可以来验证一下 ... 打开 小雪 登录的 safari 浏览器 ... 找到之前发布的一个文章 ... 添加点评论 ... 点击 保存 ...

网站上没有显示信息 ... 这样应该也就没有发送邮件通知文章的作者 ...

回到管理员登录的 chrome 浏览器 ... 找到刚才那篇文章 ... 编辑一下 ... 找到 新评论邮件提醒 这个字段 ... 勾选一下 ... 这就表示文章的作者愿意接受新评论的邮件提醒 ... 点击 保存 ...

再打开小雪登录的 safari 浏览器上 ... 添加点评论 ... 点击 保存 ..

在网站上会显示一个提示的信息 .. 这也说明 Drupal 同时会发送一封提醒的邮件给这个文章的作者 ....

来自  https://ninghao.net/video/806#info

组件

8)可以重复利用的东西

组件就是一些配置好的规则,你可以在其它的规则或者模块里重复使用这些创建好的组件。你可以创建条件,动作,或者规则类型的组件。

下面我们一起创建一个简单的条件类型的组件。我们之前创建过一条规则,文章作者为管理员时发布并推荐到首页 ... 这条规则里有两个条件,用户的角色是管理员,内容类型是文章 .. 如果在其它的规则里,你需要使用同样的条件 ... 我们可以使用这两个条件来创建一个条件类型的组件。

这样在其它的规则的条件里,我们可以直接使用这个验证用户是否为管理员,并且内容类型是文章的这个条件规则组件。

在规则的管理界面 ... 点击 组件 ... 添加新组件 ...

选择要创建的组件的类型 (#open)... 我们想创建的组件里只包含规则的条件 .. 所以可以选择条件集 ... 如果组件只包含要执行的动作,可以使用动作集 ...

动作类型的组件我们可以手工执行,也可以添加到计划任务,在未来去执行,还可以用在视图批量处理模块上 ...

如果组件需要触发的事件,又需要验证的条件还有执行的动作 ... 可以选择 规则 类型的组件 ... 如果组件需要一系列的规则 ... 可以使用规则集 ...

条件集又分成 或 的条件集,还有 与 的条件集 ... 我们选择 与 的条件集 ... 就是如果规则的条件里使用这个类型的组件 ... 执行规则里的动作必须得同时满足设置的条件还有选择的这个,与条件集组件里的条件 ...

点击 继续 ...

输入组件的 名称 ... is admin .. 编辑 ... 再输入 是否为管理员 ...

在变量这里,我们可以设置一下在这个规则组件里要处理的东西... 在这个组件里,我们要验证一下内容的类型,还有内容的作者是谁... 所以要处理的数据的类型是 node ,节点 ...

输入一个标签 ... node ... 再添加一个机读名称 ... 这个名称必须唯一 ... 我们也可以使用 node ...

点击 继续 ...

因为选择的组件类型是条件集,所以配置的界面只允许我们添加一些条件 ... 点击 添加条件 ... 用户的角色 ... 用户是 node:author ... 角色是 administrator ... 保存 ...

再添加一个条件 ... 内容类型是 ... 内容类型 选择 文章 ... 点击 保存 ..

这样我们配置好了一个条件类型的规则组件 ... 可以验证内容的作者角色是否为管理员 .. 下面我们可以把它用在其它的反应规则上 ...

找到前面我们添加的 文章作者为管理员时发布并推荐到首页 这条规则 ... 先删除掉这个规则里的两个条件 ... 然后点击 添加条件 ... 我们可以选择刚才添加的 是否为管理员 这个规则组件 ... 点击 保存 ...

下面我们可以再测试一下这条规则 ... 点击 添加内容 ... 文章 ... 输入个标题 ... 测试组件的功能 ...

现在发布选项里的状态是 未发布 ... 不推荐到首页 ...

点击 保存 ... 再编辑一下 ... 因为文章的作者是管理员 ... 而且内容类型是文章 ... 所以,文章的发布选项里勾选了已发布 ... 还有推荐到首页 ... 这也就表示我们设置的条件类型的组件是有效果的 ...

来自  https://ninghao.net/video/807#info


9)为批量处理创建可以执行的操作 - 准备

Views Bulk Operations,使用它,再配合视图模块,我们可以先创建一个内容列表,然后选中这个列表里的某一些内容,再对这些内容去做一些事情,比如删除这些内容,修改内容的作者,分类,发布日期,把它们推荐到首页等等 ...

这些操作都是 Views Bulk Operations 模块,还有相关的其它的模块提供的 ... 我们可以使用规则模块,自己来创建操作 ... 这就给我们更多的灵活性,你可以在操作里加上各种条件,可以组合不同的动作等等 ...

这个视频我们用规则模块,给 Views Bulk Operations 模块创建一个简单的操作,从首页移除并停止发布内容,同时发送邮件通知文章的作者 ...

先安装一下 Views Bulk Operations 模块 ...

下面我们可以去创建一个 VBO 视图 ... 点击 结构 ... 视图 ... 如果你还不知道什么是 Views 视图 .. 可以先看一下宁皓网的 《 Drupal 7 字段 视图 关系 》这个课程 ...

点击 添加视图 ... 输入视图的名称 ... 比如我们叫它 vbo ... 显示 内容 ... 类型是 文章 ...

勾选 生成一个页面 .. 输入页面的标题 ... 文章内容列表 ... 路径输入 vbo ...

显示格式 选择 表格 ... 然后点击 继续编辑 ... 现在这个页面视图可以使用表格的样式来显示一个文章类型的内容的列表 ...

想把这个普通的视图变成一个可以批量处理的视图,我们只需要添加一个批处理内容的字段 ... 点击 字段 后面的 添加 ...

安装了 VBO 模块以后,在这里你可以找到 批量操作:内容 ... 勾选一下 ... 添加 应用 ...

这一步我们可以选择批量操作可以执行的动作 ... 删除项目 ... 修改实体的值 ... 保存内容 ... 等等 ... 我们一会用规则模块创建一个动作组件,这个组件会显示在这个可以使用的批量操作的列表里 ...

先不选择批量操作 ... 点击 应用 ... 然后点击 保存 ....

点击 查看 页面 ... 我们可以先预览一下 ... 这个页面就是我们刚才创建的批处理页面 ... 选中列表里的项目 ... 然后再选择想要执行的操作 ... 目前这里还没有可以选择的操作 ...

下面我们回到 规则 模块 ... 去创建一个动作组件 .... 然后把这个组件用在这个批处理页面上 ...

来自  https://ninghao.net/video/808#info


10)为批量处理创建可以执行的操作 - 实施

这个视频我们给批处理视图创建一个可以执行的动作。点击 配置 ... 规则 ... 打开 组件 选项卡 ... 添加新组件 ... 组件的类型选择 动作集 ... 点击 继续 ...

输入一个机读的名称 .... remove content from front page and unpublish with notify ... 点击 编辑 ... 再定义一个中文名 ... 从首页移除内容取消发布并发送通知邮件给作者

给这个动作组件添加一个变量 ... 这个组件要处理的东西是 node ,也就是内容 .... 数据类型,选择 node ... 标签输入 内容 ...

机读名称输入 node ... 然后点击 继续 ...

因为这个是一个动作组件,所以在这里我们只能添加动作 ... 点击 添加动作 ...

在 节点 区域里 .. 找到 从首页移除内容 .... 点击 保存 ...

再添加另外一个动作 ... 添加动作 ... 选择 取消内容发布 ... 保存

最后我们要发布邮件通知文章的作者 ... 添加动作 ... 在 系统 区域里 ... 选择 发布邮件 ...

收件人 是文章的作者 ... 切换到数据选择器 ... 选择 内容 ... 再选择 author 作者 ... 然后选择 mail ... 这就表示收件人的地址是内容的作者的邮件地址 ...

然后我们再配置一下邮件的标题.. 在替换匹配模式里 ... 先找到内容的作者 .... 复制一下 ... 粘贴到上面 ...

再找到内容的标题 ... [node:title] ... 粘贴过来 ... 再加上点静态的文字 ...

[node:author] ,你的 《 [node:title] 》 已经从[site:name]的首页移除并取消发布

再处理一下邮件的内容 ... 我们可以加上一个内容的链接 ....

[node:url]

然后点击 保存 ...

这样这个动作组件就做好了... 下面我们可以把它分配给之前创建的批处理视图上去使用 ...

打开 结构 ... 视图 ... 打开 vbo 这个视图

再打开 批量操作 这个字段 ...

在这个字段的选择批量操作的列表里,你可以找到我们刚才创建的 从首页移除内容取消发布并发送通知邮件给作者 这个操作 ...

这个操作就是我们刚才用规则模块创建的。 勾选一下 ... 然后点击 应用 ... 保存 ...

查看页面 ...

先在这个内容列表里选中要处理的内容 ...

下面我们可以先到首页看一下 .. 现在首页上有两个文章 ...

再回到批处理视图的页面 ... 在上面的操作这里,选择 从首页移除内容取消发布并发送通知邮件给作者 这个操作 ... 然后点击 执行 ... 再点击 确认 ..

这样所以选中的内容会从首页上移除,并且取消发布 ... 同时会发送邮件通知文章的作者 ...

不过这里会遇到一个错误,但实际上所有的操作已经完成了 ... 这个错误是发送邮件引起的 .. 我用的是 SMTP 模块发送邮件,可能是因为这个原因 ... 先不用管用 ... 以后应该可以解决这个错误 ...

点击这个链接 ... 提示我们成功的执行了选择的操作 ... 后面还有被执行的项目的数量 ...

回到首页 ... 刷新 .. 内容已经从首页上移除了 ...

再打开我的邮箱看一下 ... 在我的收件箱里 ... 会收到文章从首页移除并取消发布的通知邮件 ...

来自 https://ninghao.net/video/809#info


计划任务

11)为内容添加日期字段收集开始与结束发布的日期

根据某些特定的事件,可以触发并立即执行规则里设置的动作 ... 使用 Rules Scheduler ,我们可以设定在未来的某个时间去执行这些动作... 比如用户如果关注了你发布的活动,在活动开始的前一天,可以自动发邮件提醒关注这个活动的用户。

用户关注活动,是一个触发规则的事件 ... 发邮件提醒,是要执行的动作 ... 用户关注活动这个事件发生以后,我们不去立即执行发送邮件的动作,而是根据活动里的日期,设置计划在这个日期的前一天再发送提醒邮件的动作。

这个视频我们来计划任务类型的规则 ... 在创建文章的时候,用户可以选择在未来的某一天发布这个文章。这里我们需要用到 date 日期模块。

我们可以为内容添加一个日期字段,用户在发布文章的时候可以选择一个计划发布这篇文章的日期 ... 也可以同时设置一个结束发布文章的日期。

这样我们就可以根据这个开始发布和结束发布的日期,使用规则模块创建规则 ... 在指定的日期里发布,或者停止发布文章 ...

date

先打开 date 模块的页面 ... 复制一下模块的地址 ...

回到 Drupal ... 打开 模块 ... 安装新的模块 ... 粘贴过来 .. 安装 ... 回到模块的管理界面 ...

找到 date 模块 ... 勾选一下 date ... date api ... date popup ...

都选中以后 .. 点击 保存设置 ...

下面我们去给文章添加一个可以选择文章发布日期的字段 ... 打开 结构 .. 内容类型 ... 点击 文章 后面的 管理字段 ...

添加新字段 ... 输入 publish date ... 编辑 ... 再定义一个中文名 ... 计划发布日期与时间 ...

字段类型选择 Date ... 控件 选择 Pop-up calendar ... 点击 保存 ...

指定可以选择的日期与时间 ... 如果想存储结束的日期,可以再勾选一下 收集截止日期 这个选项 ... 保存字段设置 ...

我们可以再修改一下这个日期字段 ... 点击 更多设置和值 ...

开始年份 这里,选择的是 离现在负 3 年 ... 我们要收集的是文章的计划在未来发布的日期,过去的日期没有什么意义 ... 所以 开始年份 这里选择 离现在 负 0 年 ..

在下面 默认值 这里 ... 默认日期 是 现在 ... 也就是在发布内容的时候,如果不选择日期 ... 默认的日期就是现在的日期 ... 我们选择 不使用默认值 ... 因为不是所有的文章都想在未来的某个时间发布,很多时候我们都会直接发布 ...

下面的 默认结束日期 也选择 不使用默认的日期 ...

然后点击 保存设置 ...

测试

下面我们可以打开一个文章内容 .. 点击 内容 ... 编辑 ...

在文章内容的编辑界面 ... 可以看到一个 计划发布日期与时间 的字段 ... 点击 日期 ... 可以选择一个日期 ... 比如我们想在 xx 发布这篇文章 ...

后面可以指定一个具体的时间 ...

如果想在某个时间停止发布这篇文章 ... 我们可以勾选一下 显示截止日期 ... 然后在下面再指定一个截止发布文章的日期和时间 ...

点击 保存 ...

Drupal 会保存 计划发布日期与时间 字段里选择的开始和截止发布的日期和时间 ... 不过目前为止,它还不能做任何事 ... 我们需要根据这个开始和结束时间创建一个计划任务才行 ...

下面视频我们再来看一下创建计划任务的规则 ...

来自  https://ninghao.net/video/810#info


12)创建可以在未来时间执行的任务

在这个视频里我们来创建计划任务规则。我们先来创建一个可以计划发布文章的规则 ... 先打开 模块 ... 启用 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 的时候,就会执行计划任务里满足条件的任务...

在这个计划任务的列表里,已经没有了刚才的任务... 表示成功的执行了这个任务 ..

我们可以去看一下这个内容 ... 打开内容 ... 你会发现,现在, 这个内容的状态,就会变成了 已成表 ....

来自  https://ninghao.net/video/811#info


13)计划停止发布文章的任务

这个视频我们再创建一个可以计划取消发布文章的规则 ... 打开 规则 的管理界面 ... 再打开 组件 ... 我们先创建一个可以取消发布文章的动作组件 ...

添加新组件 ... 选择 动作集 .. 继续 ... 输入名称 ... 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 号了,计划在过去发布这个文章的任务永远不会被执行 ..

解决这个问题我们可以为计划发布文章的规则里添加一个条件,对比一下计划发布日期和当前网站的日期,如果计划发布日期大于网站当前的日期才会添加计划发布文章的任务 ... 你可以自己去试一下 ...

下面回到内容 ... 你会看到这个内容的发布状态已经变成未发布 了 ...

结束

到现在我们已经创建了可以计划发布和取消发布文章的规则 ... 另外,你可以自己来创建可以删除计划任务的规则 ... 比如当用户去掉了计划发布日期或者结束发布日期 ,在保存内容以后,可以删除之前创建的计划任务。

来自  https://ninghao.net/video/812#info

应用

14)Flag:根据用户投票来推荐文章到首页

有些模块集合了规则模块,为规则模块提供了新的事件,条件,还有动作 ... 这个视频我们来看一下创建跟 flag 标示模块相关的规则 ...

创建一个推荐到首页的标示添加到文章内容上 ... 当点击推荐到首页标签的用户到一定数量的时候 .. 会把文章推荐到首页去显示 ...

先去下载并且安装一下标示模块 ... 这里我事先安装好了这个模块 ..

点击 结构 ... 标示 ... 我们先创建一个推荐到首页的标示 ..

新建标示 ... 输入标示的名称 ... 我们可以叫它 up .. 标示类型选择 节点 .. 添加标示 .

再输入个中文名 .. 推荐

输入标示的信息 ... 标示链接文字 ... 推荐 ... 再输入一个 取消标示链接文字 .. 输入 不推荐

在捆绑这里,选择 文章 ... 然后点击 保存 ..

打开一个文章内容看一下 ... 在文章上,会有一个 推荐 的标示 ... 用户可以点击这个链接标示这个内容 ...

规则

下面我们再去创建一条规则 .. 当有超过 1 个人标示某个文章的时候,把这个文章推荐到首页上去显示 ...

打开 配置 .. 规则 ... 添加新规则 ..

promote to front page If enough people has flagged ... 编辑 ... 如果有足够多的人标示了文章推荐它到首页显示

触发的事件 选择 一个 “推荐” 下的 节点 已被标示 ... 这是安装了 flag 模块以后出现的新的事件 .. 推荐是我们刚才创建的一个标示 .. 也就是每次有人点击 推荐 标示 ... 就会触发这条规则 ..

点击 保存 ...

添加一个条件 ... 选择 node 标示计数 .. 标示 选择 推荐 .. 数据选择器 选择 flagged node ... 数字 输入 1 ..

比较运算符 选择 大于 ...

这条规则的意思就是,如果使用推荐标示一个文章的用户数大于 1 的时候 ... 这个条件会返回一个 真 假 ... 这样也就会去执行我们下面要设置的动作 .. 就是推荐文章到首页上去显示 ..

先点击 保存 ...

添加动作 ... 将内容推荐到首页 ... 内容选择 flagged node ... 保存 ...

测试

先打开一个文章内容 ... 点击一下 推荐 这个标示 ... 现在有一个人使用推荐标示了这个文章内容 ... 如果再有一个人推荐这个文章 ... 这个文章就会被推荐到首页去显示 ...

我们再打开用另一个用户登录的浏览器 ... 打开刚才那篇文章 .. 刷新一下 ..

然后点击 推荐 ...

回到首页 .. 你会发现这篇文章已经被推荐到了首页去显示 ... 因为使用推荐标示这个文章的用户大于 1 个人,所以会触发我们设置的规则 ,把它推荐到首页来显示 ...

如果你想把这条规则用在真正的网站 ,你可能需要再去创建一条规则 ... 就是当用户取消推荐的时候判断一下文章是不是还够资格推荐到首页上 .. 如果不够的话,可以把文章从首页上拿下来 ...

来自  https://ninghao.net/video/813#info


15)Flag + Entityreference - 向所有订阅用户发送内容更新通知

网站有两种内容类型,电视剧,还有剧集,剧集内容类型上添加了一个实体引用字段 ,可以引用剧集关联的电视剧。给电影剧内容类型上添加一个订阅的标示,用户可以点击这个标示订阅自己喜欢的电视剧。

当电视剧更新了剧集以后,也就是发布了新的剧集内容并引用了某个电视剧的时候,网站会给所有订阅这个电视剧的用户发布一个通知。

下面我们可以来设计这个规则。我们先去准备一下 ..

规则

先想一下这条规则 .. 首先触发这条规则的事件应该是 保存新的内容后 .. 条件是内容类型是剧集 .. 然后根据剧集里的实体引用字段,提取出使用订阅来标示电视剧内容的用户,再给每个用户发布一个通知的邮件 ...

打开 配置 ... 规则 ... 添加新规则 .. 先输入一下机读名称 .. subscribe notification .. 编辑 .. 再输入一个中文名 .. 订阅通知 ..

事件 选择 保存新的内容以后 .. 保存 .

在这个规则里,添加一个条件 .. 添加条件 .. 选择 内容类型是 .. 继续 . 内容类型 选择 剧集 ..

下面在动作里,我们首先要提取出使用订阅标示剧集内容所引用的电视剧内容的用户 .. 然后给第个用户发送通知邮件 ..

添加动作 ... 选择 提取使用标示来标示内容的用户 ... 标示 选择 订阅 ... 表示我们要提取的用户是使用 订阅 这个标示的用户 ..

在下面的 node 这里,使用 数据选择器 .. 选择带省略号的 node . 创建的内容 ... 这个创建的内容应该是剧集内容 .. 然后再选择 field-related-tv-show .. 相关电视剧 这个字段 .

这个字段是一个实体引用字段 .. 我们要先安装一个 entity reference 模块,才能为内容添加这样的字段 ..

在发布剧集内容的时候,可以去关联剧集所属的电视剧 .. 这里我们选择这个字段的意思就是,提取剧集内容使用相关电视剧字段引用的电视剧内容里,使用订阅标示这个电视剧内容的用户。

点击 保存 ..

现在我们有了一个用户列表 .. 下面我们要给这个列表里的每个用户发送邮件 .. 我们可以添加一个循环 .. 添加循环 ..

选择列表里的内容 ... 这里我们选择 users .. 这个列表就是前面我们提取到的用户的列表 ..

点击 继续 .. 然后在这个循环里,我们可以再添加想要做的事情 .. 点击 添加动作 ... 选择 发送邮件 ...

配置一下收件人 .. 切换到数据选择器 .. 选择 当前列表项目 .. 再选择 mail ... 再设置一下标题 ..

[list-item:name],你订阅的 《 [node:field-related-tv-show] 》更新了 [node:title] 。

邮件的主体内容里,可以再加上一个内容的链接 ...

[node:url]

点击 保存 ...

测试

下面我们可以去测试一下 ... 点击 内容 ... 打开 无耻之徒 这个电视剧内容 ... 然后点击 订阅 .. 这样当有剧集引用了这个电视剧的时候,就会给我发送一封通知的邮件 ...

添加内容 ... 选择 剧集 ...

输入标题 .. 第一集 .. 相关电视剧 这里选择 无耻之徒 这个电视剧 ... 然后 点击 保存 ...

打开我的邮件去看一下 ...

在收件箱里.. 会找到一个通知的邮件 .. 提示我订阅的电视剧更新了 ...

来自  https://ninghao.net/video/814#info


16)根据用户行为给用户添加或扣除积分

我们可以安装一个 userpoints ,用户积分模块,然后把它跟 rules 规则模块整合在一起使用,这样你可以设计规则,在不同的情况下给用户添加积分,或者扣除积分。比如当用户发表一个评论的时候,为用户添加一个积分。

你还可以设计利用用户拥有的积分去做一些事,比如当用户的积分到一定程度的时候,可以为用户添加新的用户角色,拥有特别的权限。

我们可以先去安装一下 userpoints 模块 ... 然后启用 userpoints 用户积分模块,还有用户积分和规则整合的模块,userpoints rules integration ...

安装以后,可以去看一下 用户积分 模块的管理界面 ... 打开 配置 ... points ...

默认用户积分叫 Points ,你可以修改一下 .. 打开 points 设置 ... 打开 品牌 选项卡 ... 在这里,你可以重命名一下 point 的名称 ... 比如我们可以叫 积分 ... 你可以根据自己的需求来命名它 ...

再打开 总数 .. 在这里,你可以管理用户的积分 .. 添加积分交易 .. 在 用户名 这里,选择网站上的一个用户,然后在下面可以为这个用户添加或者扣除积分 ...

另外,积分会有不同的分类 ... 这个积分分类是一个分类词汇表 ... 打开 结构 ... 分类 ... 这里的 userpoints 就是 userpoints 模块给我们创建的 ..

你可以为这个分类词汇表添加新的分类 ...

积分

下面我们可以创建一条简单的积分规则 .. 当用户添加一条评论的时候,给用户添加一个积分 ...

打开 配置 ... 规则 ... 添加新规则 .. grant point to user when they comment a article .. 编辑 .. 再输入 当用户评论时给用户添加积分 ..

触发的事件 选择 在保存新的评论之后 .. 保存 ...

这个规则里可以不用设置条件 ... 下面来添加一个给用户积分的动作 ... 添加动作 ...

用户这里,使用 数据选择器 ... 选择 .. 带省略号的 comment 创建评论 .. 再选择 author 作者 ... 意思是我们要添加或者扣除积分的用户是评论的作者 ..

下面的积分,我们可以直接输入 1 ...

下面的 积分类别 ,选择 General ... 这个地方的类型就是在 userpoint 分类词汇表里设置的 ...

实体 选择 comment:node ... 可以记录一下用户的这个积分来自哪个实体 ...

下面再配置一下 描述 ,可以说明一下为什么要给用户积分 ... 输入 评论了 《 [comment:node] 》 ... commend:node 是一个占位符,它会被动态的替换成用户所评论的内容的标题 ...

下面 操作 这里,输入 添加 ..

如果你想更好的跟踪积分交易 ... 可以在参考 这里添加一个参考的内容 ... 这个内容只会显示给管理员,不会显示给终端用户 ..

在 替换匹配模式 这里,复制一下 [comment:title] ... 评论的标题 ...

显示 这里,可以勾选一下 ... 这样在用户获得积分的时候,会在网站上显示一条信息给用户 ..

暂缓 这里,可以选择 自动批准 ... 这样用户可以自动获得积分,不用等管理员审核 ...

在过期时间这里,你可以配置一下这个积分过期的时间 .

点击 保存 ...

测试

这样我们就配置好了这条规则 ... 用户在评论内容的时候,会给用户一个积分 .. 下面我们可以去试一下 ... 打开 内容 ... 找到一个内容 ...

添加一条评论 ... 保存 ... 网站上会显示一条信息 , 提醒用户获得了一个积分 ..

打开 我的帐户,再打开 积分 选项卡 ...

在这里会显示当前用户所拥有的积分 .. 你可以看到一条信息,说用户评论了 xx ,并获得了一个积分 .. 点击 查看..

会显示这个积分交易的详细的信息 ..

来自  https://ninghao.net/video/815#info

17)用户积分到一定数量以后自动为用户分配新的用户角色 - 规则集

这个视频我们设计一个规则,当用户积分超过 20 分以后,为给用户添加高级会员的角色,同时添加计划任务,在未来一个月内移除掉用户的高级会员角色。

下面我们来看一下。我们可以先去创建一个新的用户角色 ... 点击 用户 .. 权限 ... 角色 .. 输入角色的名称 ... 高级会员 .. 添加角色 ...

下面你可以给新添加的高级会员这个角色添加一些特殊的权限 ...

规则

下面我们再去创建规则 .. 配置 .. 规则 .. 添加新规则 .. add_user_role_to_user_if_they_have_enough_points .. 编辑 ..

再输入 获得足够多的积分后给用户添加用户角色 .. 触发这个规则的事件 .. 选择 用户获得积分 .. 点击 保存 ..

然后我们可以添加规则的条件,还有要执行的动作 .. 执行的动作就是给用户添加 高级会员 这个角色,同时扣除用户 20 个积分 ..

要验证的条件,可以判断一下用户的角色 .. 如果用户不是高级会员,那么就去执行规则里的动作 .. 下面我们先来添加这个条件 ..

添加条件 .. 选择 用户的角色 .. 用户 这里选择 积分交易 .. 再选择 用户 .. 意思是,我们要判断的用户是获得积分的这个用户 ..

角色 .. 选择 高级会员 .. 再勾选一下 否定 .. 意思是,获得积分的用户不是高级会员 .. 点击 保存 ...

下面我们要判断一下获得积分的用户的总积分是不是大于 20 分,如果大于 20 分,就给这个用户添加高级会员的角色 ...

不过默认情况下,没有可以判断用户积分的条件 ... 解决这个问题的方法是,我们可以创建一个规则集的组件 ... 在这个规则集里,先添加一个规则,载入用户的积分 .. 然后在再添加一条规则 .. 在这条规则里,我们就可以使用前一条规则获得的用户积分做为判断的条件了 ...

组件

先保存一下这条规则 .. 然后回到规则的管理界面 .. 点击 组件 .. 添加组件 .. 我们要创建一个规则集的组件 ... 就是这个组件里可以包含几个规则 ...

选择 规则集 .. 点击 继续 ..

输入名称 ..20 points add new role to user ,编辑 .. 再输入组件的中文名 .. 20 个积分为用户添加新的角色

在 变量 里,选择在这个组件里要用到的东西 .. 选择 用户 ... 标签 可以使用中文 .. 用户 ... 机读名称 .. 输入 account ...

然后点击 继续 ..

在这个规则集组件里,先输入一条载入用户积分的规则 .. 添加规则 ..

输入规则的名称 .. 载入用户积分 .. 在这个规则里,我们可以添加一个动作 .. 添加动作 .. 选择 载入一个用户的积分 ..

用户 这里,选择要载入积分的用户 .. 选择 account ... 积分类别 选择 所有分类 .. 然后点击 保存 ..

下面我们再添加一条规则 .. 添加规则 .. 输入名称 .. 比较积分数并为用户添加高级会员角色

先添加一个条件 .. 添加条件 .. 条件的类型是 数据比较 .. 要对比的数据 选择 loaded points .. 这个选项就是刚才添加的那个规则获取到的用户的积分 ...

点击 继续 .. 操作符 选择 大于 .. 数据值 输入 20 .. 意思是,如果用户的积分大于 20 分。 点击 保存 ..

下面我们需要再添加三个条件 .. 首先是要给用户添加高级会员用户角色 .. 然后是从用户积分里扣除 20 分 .. 再就是我们要在 1 个月以后自动移除用户的高级会员角色 ..

添加条件 .. 选择 添加用户角色 .. 要添加用户角色的用户 选择 account .. 角色 选择 高级会员 .. 点击 保存 ..

下面我们再添加扣除用户积分的动作 .. 添加动作 .. 给用户积分 .. 继续 ..

用户选择 account .. 积分 输入 -20 .. 这样会扣除掉用户 20 个积分 ... 分类是默认的 General ...

再添加一个描述 ... 添加高级会员角色,扣除 20 个积分。 操作 输入 扣除 ..

下面的 暂缓 .. 选择 自动批准 .. 然后点击 保存 ...

计划删除角色

最后我们要添加一个计划删除高级会员角色的动作 .. 我们需要再去创建一个组件 .. 先保存一下 ... 然后回到 组件 ..

添加新组件 ... 选择 动作集 ... 继续 .. remove user role from user .. 删除用户角色 ...

添加动作 ... 选择 移除用户角色 ... 要移除用户角色的用户是 account ... 要移除的角色是 高级会员 .. 保存 .。

再回到 20 个积分为用户添加新的角色 这个组件 ... 编辑一下 比较积分数并为用户添加高级会员角色 这个规则 ..

添加动作 .. 选择 计划任务 ...

组件 选择 删除用户角色 ... 继续 .. 计划执行的时间 ... 先切换到数据选择器 ... 选择 站点信息 ... 当前日期 ..

再打开 添加偏移 .. 输入 +1 ,后面的单位选择 月 ... 意思就是,在当前日期的一个月以后执行 删除用户角色 这个动作 ..

下面的 account 选择 account ... 配置一个标识符 .. 输入 移除 [account:name] ( [account:uid] )高级会员角色 ... 然后点击 保存 ..

继续配置

下面我们再回到最开始添加的响应规则 .. 获得足够多的积分后给用户添加用户角色...

在里面再添加一个动作 .. 选择 20 个积分为用户添加新的角色 这个规则集组件作为动作 ..

用户 选择 积分交易 .. 用户 .. 意思就是我们要添加用户角色,扣除积分,计划删除用户角色的用户是获得积分的这个用户。

点击 保存 ..

测试

下面我们可以测试一下 ... 打开 配置 .. 管理积分 .. 添加积分交易 .. 用户名 输入 小雪 .. 积分 输入 30 ..

然后点击 保存 ..

这样我们可以直接给小雪这个用户 30 个积分 .. 这个给用户规则的事件 .. 会触发我们设置的规则 .. 打开 用户 .. 你会看到 小雪 这个用户,已经有了一个 高级会员 的角色 ...

再打开小雪的帐户页面 .. 点击 积分 ..

你会看到,通过管理员,给小雪 30 个积分,然后又扣除掉了 20 个积分用来给小雪添加高级会员角色 ...

再打开 配置 .. 规则 .. 计划任务 .。

在这里,会有一条在一个月以后要执行的任务,移除小雪的高级会员角色 ...


来自  https://ninghao.net/video/816#info

普通分类: