通过 Filter_Plugin_Comment_Call 接口,可以为 Z-BlogPHP 的评论对象添加自定义方法:当插件或模板代码调用 Comment 对象上未定义的方法时,系统会进入本接口,由回调完成方法的具体逻辑并返回结果。
Filter_Plugin_Comment_Call
&$comment, $method, $args
下例为评论对象定义一个自定义方法 GetSummary($length),返回评论内容的纯文本摘要:
GetSummary($length)
<?php RegisterPlugin("demoAPP", "ActivePlugin_demoAPP"); function ActivePlugin_demoAPP() { Add_Filter_Plugin('Filter_Plugin_Comment_Call', 'demoAPP_Comment_Call'); } function demoAPP_Comment_Call(&$comment, $method, $args) { global $zbp; if ($method != 'GetSummary') { // 不是本插件定义的方法时立即返回 return; } $length = isset($args[0]) ? (int) $args[0] : 30; $text = trim(strip_tags($comment->Content)); if (function_exists('mb_substr')) { $summary = mb_substr($text, 0, $length, 'UTF-8'); } else { $summary = substr($text, 0, $length); } // 置位 RETURN 信号,让本次返回值作为方法调用的结果 $GLOBALS['Filter_Plugin_Comment_Call']['demoAPP_Comment_Call'] = PLUGIN_EXITSIGNAL_RETURN; return $summary; }
注册后即可在插件或模板代码中调用:
echo $comment->GetSummary(50);
PLUGIN_EXITSIGNAL_RETURN
$method
$args
isset
评论自定义方法扩展
通过
Filter_Plugin_Comment_Call接口,可以为 Z-BlogPHP 的评论对象添加自定义方法:当插件或模板代码调用 Comment 对象上未定义的方法时,系统会进入本接口,由回调完成方法的具体逻辑并返回结果。接口信息
Filter_Plugin_Comment_Call&$comment, $method, $args完整案例
下例为评论对象定义一个自定义方法
GetSummary($length),返回评论内容的纯文本摘要:注册后即可在插件或模板代码中调用:
注意事项
PLUGIN_EXITSIGNAL_RETURN信号才能生效,信号在每次生效后被系统重置,要在回调内每次置位(如案例写法);不置位时返回值会被忽略;$method是否为本插件定义的方法;$args参数是调用时传入的实参数组,取值前建议用isset判断默认值。