6 实现动作的逻辑处理函数

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

我们通过'base'键,指定了函数'breadcrumb2_rules_append_breadcrumb_trail',我们来看一下具体的代码,向breadcrumb2.rules.inc文件中追加以下代码:

/**

 * Action: Append breadcrumb trail to breadcrumb object.

 */

function breadcrumb2_rules_append_breadcrumb_trail(EntityDrupalWrapper $breadcrumb, $title, $url) {

  if(empty($title) || empty($url)){

    return;

  }

  $link = array(

    'title' => $title,

'url' => $url,

  );

  $links = $breadcrumb->link->value();

  $links[] = $link;

  $breadcrumb->link->set($links);

  //drupal_set_message('title:'.$title.'url:'.$url);  

}

    这里面的逻辑比较简单,就是将$title, $url合成为$link数组,追加到$breadcrumb->link上去。开始的时候,我是没有编写上面的if语句的。后来出于更周全的考虑,当$title或 $url为空时,我们直接返回了,就不再追加这个链接了。我们这里假定,一个链接,必须要有一个$title和一个 $url

现在我们回到,刚才创建的规则“breadcrumb for node create”的编辑页面,此时添加一个新的动作,在动作的可选项中,并没有我们新增的动作。这个时候我们需要清除缓存。当做Rules的开发时,有时候,缓存需要多清除两次。好了现在就可以添加我们的动作了。

图片1.png 

我们选中动作“Append breadcrumb trail”(追加面包屑链接),这里使用trail这个英文单词,是因为另外的一个面包屑模块也这么用。选中后,点击继续按钮,就可以配置我们的这个动作了。

图片2.png 

只需要我们指定参数,Rules就会自动的为我们创建好对应的配置表单,比较智能吧。由于我们这里只有breadcrumb这个变量是面包屑对象,所以第一个参数,系统为我们自动设置了。我们在TITLE里面输入“[node:type-name]s”,在URL里面输入“[node:type]s”,注意这里的[node:type-name][node:type]都是替换符号,我以前经常把它们称作令牌(token)。现在创建一个page页面,就会自动创建一个首页 >> Pages”这样的面包屑了。


Drupal版本: