◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
zblogphp1.7页面路由之搜索功能伪静态化

Z-BlogPHP 1.7版本可以通过页面路由功能实现搜索功能的伪静态化,1.7 新版路由增加了路由系统,一般来说,我们只要向系统注入一条路由规则,再实现该条路由 call 的函数,匹配成功后向该函数传入一个数组参数,就实现路由功能了。增加路由条目的关键是在配置路由规...
Z-BlogPHP 1.7版本可以通过页面路由功能实现搜索功能的伪静态化,1.7 新版路由增加了路由系统,一般来说,我们只要向系统注入一条路由规则,再实现该条路由 call 的函数,匹配成功后向该函数传入一个数组参数,就实现路由功能了。增加路由条目的关键是在配置路由规则的数组,如果对路由系统不熟悉,请在应用中心下载 Z-Blog PHP Development KIT 插件,仔细研究系统自带的路由规则。
//将注入路由的函数挂上接口 Add_Filter_Plugin('Filter_Plugin_Zbp_PreLoad', 'demoPlugin_RegRoute'); //创建搜索伪静化的规则,并挂在 Filter_Plugin_Zbp_PreLoad 接口function demoPlugin_RegRoute() global $zbp; $route = array ( 'posttype' => 0,//文章类型 'type' => 'rewrITe',//路由的类型,可以是active,rewrITe,default 'name' => 'post_article_search', //名称 'call' => 'ViewSearch', //呼叫的函数,匹配成功后call之,并传入一个含有各种匹配参数的数组 'urlrule' => '{%host%}search/{%q%}_{%page%}.html',//规则主体 'args' => //伪静类型路由的参数(出现在urlrule里的) array ( 'q' => '[^\\/_]+',//q是搜索的关键字,支持正则匹配 'page',//page是页码 ), 'only_match_page' => false,//为假表示可以匹配没有{%page%}参数的url,默认如此可以不加这一行配置 ); $zbp->RegRoute($route);}//ViewSearch函数系统已经写好了,所以只需要注入路由就可以实现搜索功能的伪静态化!
路由系统在匹配到规则后,向 call 所指定的函数 传入一个 array 数组,其格式如下
function ViewSearch() { //获取路由系统传入参数,路由系统传入一个且只传一个含有各种匹配参数的数组 $args = func_get_arg[0]; $q = $args['q']; //获取查询字符串 $page = $args['page']; //获取页面,如果有的话 //得到该匹配成功的Route路由规则 $route = $args['_route']; //可以打印出$args查看详情 var_dupm($args);/* //该数组由posttype和匹配的各种参数和原始规则组成 array(4) { ["q"]=> string(7) "xxxxxxx" ["page"]=> int(1) ["posttype"]=> int(0) ["_route"]=> array(10) { //路由规则。。。 //该段省略 } } */}