Skip to content

分类属性写入监听接口 ​

在 Z-BlogPHP 中给分类对象写入属性(例如 $category->Name = '...')时会触发 Filter_Plugin_Category_Set 接口,可用于监听分类字段变化、做联动处理等场景。

接口信息 ​

接口参数说明
Filter_Plugin_Category_Set&$this, $method, $arg干预 Category 类 Set 方法的接口

完整案例 ​

下例在修改分类名时记录变更时间,供插件后续提示使用:

php
<?php

RegisterPlugin("demoAPP", "ActivePlugin_demoAPP");

function ActivePlugin_demoAPP()
{
    Add_Filter_Plugin('Filter_Plugin_Category_Set', 'demoAPP_Category_Set');
}

function demoAPP_Category_Set(&$category, $name, $value)
{
    if ($name == 'Name') {
        // 联动处理:记录分类名被修改的时间
        $category->Metas->demo_name_changed = time();
    }
}

注意事项 ​

  • 分类对象的每一次属性写入都会触发本接口(包括 Name、Alias、Order 等常规赋值),但 Url、Symbol、Level、SymbolName、Parent、AliasFirst 等只读虚拟属性以及 Template、LogTemplate 被专门拦截,写入这些属性不会触发。
  • 回调发生在数据真正写入对象之前:回调执行完毕后,系统才把原始的 $value 存入对象数据。
  • 回调的返回值会被忽略,无法通过返回值取消或替换本次写入;如确需修改要写入的值,可将第三参数声明为引用传递(&$value),修改后会以修改后的值入库,但请谨慎使用。
  • 回调中给当前分类对象再赋值其他属性会再次触发本接口,注意条件收敛,避免死循环。