You are here

3 定义自己的动作

admin 的头像
Submitted by admin on 星期四, 2015-09-17 03:27

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

现在我们开始编写代码了,因为现有的功能已经满足不了我们的需求了。在breadcrumb2目录下,创建文件breadcrumb2.rules.inc,向里面添加以下代码:

<?php

 

/**

 * @file

 * Rules integration for breadcrumb2.

 *

 * @addtogroup rules

 * @{

 */

 

 /**

 * Implements hook_rules_action_info().

 */

function breadcrumb2_rules_action_info() {

  $items = array();

 

  $items['breadcrumb2_append_breadcrumb_trail'] = array(

    'label' => t('Append breadcrumb trail'),

    'group' => t('Breadcrumb2'),

    'parameter' => array(

      'breadcrumb' => array(

        'type' => 'breadcrumb2',

        'label' => t('Breadcrumb'),

        'description' => t('The breadcrumb object who will be appended.'),

        'wrapped' => TRUE,

        'save' => FALSE,

      ),

      'title' => array(

        'type' => 'text',

        'label' => t('title'),

        'wrapped' => FALSE,

      ),

      'url' => array(

        'type' => 'text',

        'label' => t('URL'),

        'wrapped' => FALSE,

      ),

    ),

    'base' => 'breadcrumb2_rules_append_breadcrumb_trail',

    'access callback' => 'breadcrumb2_rules_integration_access',

  );

   

  return $items;

}

我们在这里实现了hook_rules_action_info,通过这个钩子函数,我们就可以为Rules添加我们自己的自定义动作了。在这个钩子的里面,是有关动作的一个数组。一个hook_rules_action_info钩子函数里面可以添加多个动作,注意这里的$items是复数形式。在这里面,我们定义了一个新的动作breadcrumb2_append_breadcrumb_trail,它里面包含以下键:

'label':动作的标签。

'group':动作所属的组。

'parameter':向这个动作传递的参数。这里面包含三个参数:'breadcrumb''title''url',这里的'breadcrumb'就是面包屑对象,我们要向它上面追加链接,'title''url'则是链接的两个组成部分。

'base':用来定义这个动作的具体逻辑。

'access callback':这个动作的访问控制函数。

 

这里面还需要注意的是,向动作传递的参数也是一个数组,包含以下键:

'type' :参数的类型,Rules的类型验证会用到它。

'label' :参数的标签。

'description':参数的描述。

'wrapped':对象是否封装。这里的封装,就是是否使用entity_metadata_wrapper给封装一下。我开始的时候,不知道这个参数的含义,后来了解了entity_metadata_wrapper,才明白了这里的用法。

'save' :是否保存当前对象。


Drupal版本: