行为管理使用

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

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

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

使用方法:

  1. 创建 Behavior

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

图片

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

  1. <?php
  2. namespace Wap\Behavior;
  3. class WapBehavior {
  4. public function run(&$data) {
  5. if (MODULE_NAME == 'Content' && CONTROLLER_NAME == 'Index' && $this->isMobile()) {
  6. $catid = I('catid', 0, 'intval');
  7. $id = I('id', 0, 'intval');
  8. $parameter = $_GET;
  9. if ($catid && $id) {
  10. $action = 'shows';
  11. } else if ($catid && $id == 0) {
  12. $action = 'lists';
  13. } else {
  14. $action = 'index';
  15. }
  16. unset($parameter[C('VAR_MODULE')], $parameter[C('VAR_CONTROLLER')], $parameter[C('VAR_ACTION')]);
  17. redirect(U("Wap/Index/{$action}", $parameter));
  18. }
  19. }
  20. //判断是否属手机
  21. protected function isMobile() {
  22. ....
  23. return true;
  24. }
  25. }
  1. 注册 Behavior 到行为管理

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

图片

图片

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

如何自定义行为?

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

1.添加行为到行为系统

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

图片

2.行为埋点触发

图片

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