Drupal 7 Rules

Rules 模块是Drupal 7 最大最复杂的模块之一,根据不同的事件(Drupal Hook)触发动作(发邮件、更新内容状态、删除内容、内容置顶)。可以让不会写PHP的人员去创建一些操作。

功能

  1. 自定义动作条件
  2. 组件功能components, 此功能就像php中的函数function, 可以重复使用、传参传递、数据返回等.
  3. Rule 配置导入导出

查看Hook

官方Rules使用教程

 

安装与配置

必须的模块

  1. Rules
  2. Entity API
  3. Token

启用以下模块, entity和entity_token属于Entity API

  1. entity
  2. entity_token
  3. rules_ui
  4. token

Rules 三个核心功能:

要说的是以下的不管是事件、条件、动作都需要一个选择一个数据。这些数据都是当前可用的数据

1. 事件: 根据触发事件去运行不同的动作, 根据Drupal Hook实现此部分功能.

Rules 默认支持的事件:

Comment

  1. A comment is viewed 评论显示)
  2. After deleting a comment( 删除评论)
  3. After saving a new comment(添加新评论)
  4. After updating an existing comment (更新评论之后)
  5. Before saving a comment(保存评论之前)

Node

  1. After deleting content(删除内容之后)
  2. After saving new content(添加内容之后)
  3. After updating existing content(更新内容之后)
  4. Before saving content(保存内容之后)
  5. Content is viewed(显示内容)

System

  1. Cron maintenance tasks are performed(当Drupal 执行cron 任务计划)
  2. Drupal is initializing(当Drupal 系统初始化)
  3. System log entry is created(当系统创建一个日志)

Taxonomy

  1. After deleting a term(删除term之后)
  2. After deleting a vocabulary(删除vocabulary之后-admin/structure/taxonomy)
  3. After saving a new term(添加新的term之后)
  4. After saving a new vocabulary(添加一个新的vocabulary之后)
  5. After updating an existing term(更新term 之后)
  6. After updating an existing vocabulary(更新vocabulary之后)
  7. Before saving a taxonomy term(保存term之前)
  8. Before saving a vocabulary(保存vocabulary之前)

User

  1. After a user account has been deleted(用户帐户被删除后)
  2. After saving a new user account(新用户创建成功以后)
  3. After updating an existing user account(更新用户信息以后)
  4. Before saving a user account(保存用户信息之前)
  5. User account page is viewed(用户进入显示页面)
  6. User has logged in(用户登陆)
  7. User has logged out(用户退出)

 

2. 条件: 做一些php if的判断, 但是Rules没有else。

Rules 默认支持的条件:

Data

  1. Data comparison(数据比较)
  2. Data value is empty(数据是否为空就和php empty函数一样)
  3. List contains item(列表包含某条数据)
  4. Text comparison(文本比较

Entities

  1. Entity has field(Entity是否包含某个字段和php isset或者class_exists)
  2. Entity is new(是否是一个新的entity)
  3. Entity is of bundle(判断entity的bundle)
  4. Entity is of type(判断entity类型)
  5. User has field access(判断用户是否字段的权限)

Node

  1. Content is of type(判断内容类型)
  2. Content is promoted to frontpage(判断内容是否为推荐到首页)
  3. Content is published(判断内容是否为发布状态)
  4. Content is sticky(判断内容是否为指定状态)

Path

  1. Path has URL alias(判断URL别名)
  2. URL alias exists(判断URL是否存在,判断404)

User

  1. User has role(s)(判断用户的用户组)
  2. User is blocked(判断用户是否被锁定)

3. 动作:当满足定义的条件以后所执行的程序

Rules 默认支持的动作:

Data

  1. Add a variable(创建一个新的变量)
  2. Add an item to a list(添加一个项目到一个列表,就相当于php array_push)
  3. Calculate a value(值计算,支持加减乘除最大值和最小值. 将结果创建成一个新的变量)
  4. Convert data type(转换数据类型, 比如某些数据需要强制转换成整型)
  5. Remove an item from a list(从列表中移除一个项目, 类似于php unset(array(1)))
  6. Set a data value(修改或者重写一个数据的值)

Entities

  1. Create a new entity(创建一个Entity)
  2. Delete entity(删除一个Entity)
  3. Fetch entity by id(根据ID获取一个entity,相当于执行了entity_load)
  4. Fetch entity by property(根据entity属性获取一个entity)
  5. Save entity(保存entity和 Create a new entity一起使用)

Node

  1. Make content sticky(将node置顶)
  2. Make content unsticky(取消node置顶)
  3. Promote content to front page(将node状态修改成推荐到首页)
  4. Publish content(将node状态修改成已发布)
  5. Remove content from front page(取消node推荐到首页的状态)
  6. Unpublish content(将node状态修改成未发布)

Path

  1. Create or delete a content's URL alias(创建或者删除一个内容 URL别名)
  2. Create or delete a taxonomy term's URL alias(创建或者删除一个taxonomy URL别名)
  3. Create or delete any URL alias(创建或者删除一个所有的URL别名)

System

  1. Page redirect(执行页面跳转)
  2. Send mail(执行发送邮件)
  3. Send mail to all users of a role(执行发送邮件到一个用户组下面所有的用户)
  4. Set breadcrumb(设置面包屑)
  5. Show a message on the site(打印一个message,相当于执行了drupal_set_message)

User

  1. Add user role(添加一个用户组)
  2. Block a user(锁定一个用户)
  3. Remove user role(删除一个用户组)
  4. Send account e-mail(给用户发送邮件)
  5. Unblock a user(解除锁定用户)

模块案例

Rules 使用基本介绍

1. Rules 主配置页面(admin/config/workflow/rules)

2. 添加一个rule(admin/config/workflow/rules/reaction/add)

 

案例1: Rules 创建文章阅读统计

当用户打开一篇文章后文章的统计数增加1,刷新也会增加1

以Article内容类型为例子,添加一个字段来作统计数累积

再添加一个rule(admin/config/workflow/rules/reaction/add)

 

我们这边没有条件,只有动作。 所以添加动作(Action)

首先添加一个计算的变量, 将统计字段的原值加1.变成一个新值

值计算一般为两个值的计算value1和value2, 再后再将结果赋给一个新的变量

然后添加第二个动作选择Set a data value(此动作可以修改值所有可用数据的值node, entity)

选择以后需要再选择你要修改哪个数据的值, 这边有很多对象可以选择。包括node字段和网站设置等。 我们选择刚刚添加的字段

将值设置成我们刚刚设置的新变量。 此处默认是输入模式,我们可以切换到选择模式

保存以后我们的动作就添加成功了,我们也可以添加更多的动作

现在去添加一个内容来看看效果(node/add/article)

现在我们只要刷新一次。阅读数就会增1

案例1: 当一个非管理员的用户创建一个文章以后向管理员发送一封邮件

1. 创建一个rule

并且选择触发事件为: After saving a new content

接着创建一个条件判断用户组不是管理员

判断用户组是否包含管理员组

选择用户的作者信息和作者所在的用户组来判断

现在条件已经添加完成。我们需要添加一个动作。发送邮件

选择发送邮件动作,Send Mail

配置管理员地址,邮件标题和邮件内容

发送邮件的功能更多请看SMTP 模块

模块下载

下载中....