# 行为管理使用

在使用该功能时,请你认真阅读一遍ThinkPHP - 行为扩展 (opens new window)这章节, 需要有了这些预备知识。

CMS中的行为系统改写了ThinkPHP的系统行为实现app/Libs/System/Hook.class.php,与TP的行为管理方式 使用略有差异。

CMS中有部分模块使用到了行为管理进行开发。以Wap模块为例:

# 使用方法:

  1. 创建 Behavior

一般来说,写在对应模块的下 Behavior/ 下,命名格式遵循 XXXBehavior

图片

主要实现一个 run(&$data) 方法

<?php

namespace Wap\Behavior;

class WapBehavior {

   public function run(&$data) {
   	if (MODULE_NAME == 'Content' && CONTROLLER_NAME == 'Index' && $this->isMobile()) {
   		$catid = I('catid', 0, 'intval');
   		$id = I('id', 0, 'intval');
   		$parameter = $_GET;
   		if ($catid && $id) {
   			$action = 'shows';
   		} else if ($catid && $id == 0) {
   			$action = 'lists';
   		} else {
   			$action = 'index';
   		}
   		unset($parameter[C('VAR_MODULE')], $parameter[C('VAR_CONTROLLER')], $parameter[C('VAR_ACTION')]);
   		redirect(U("Wap/Index/{$action}", $parameter));
   	}
   }

   //判断是否属手机
   protected function isMobile() {
       ....
   	return true;
   }

}

  1. 注册 Behavior 到行为管理

设置->行为管理->选择对应的行为进行编辑,规则参考行为规则使用说明

图片

图片

测试:用手机打开首页时,自动回跳转到Wap首页。(当然,最好打Log了)

# 如何自定义行为?

上述Wap模块只是使用到了系统默认的行为 app_begin ,那么如何创建自己的行为呢?

# 1.添加行为到行为系统

设置->行为管理->添加行为

图片

# 2.行为埋点触发

图片

更多可以参考行为管理最佳实践