爱好者 > Typecho > Typecho教程 > 你可能永远也用不到的Typecho判断语法

你可能永远也用不到的Typecho判断语法

作者:佚名 来源:爱好者 时间:2020-09-17

判断程序后台语言

因为typecho后台其实是支持多语言的,而我的TeAdmin插件只支持中文,所以研究了下对于语言的判断

if(Typecho_Widget::widget('Widget_Options')->lang=='zh_CN'||empty(Typecho_Widget::widget('Widget_Options')->lang)){
echo '当前中文环境!';
}
其中Typecho_Widget::widget('Widget_Options')->lang就是语言参数,为空时就是没有设置语言默认状态,恰巧typecho是国产程序,所以为空或者为zh_CN就是中文状态。

判断路由是否存在
查看源码发现print_r(Helper::options()->routingTable);可以输出全部路由信息数组,所以判断就简单了

if(empty(Helper::options()->routingTable['路由名字'])){
echo '不存在该路由';
}
我主要用来判断没有路由就自动增加路由,用于TeAdmin插件3.0.0之后的版本上,这样只要用户进入插件某个需要路由的地方,如果不存在该路由就会自动建立路由,这样用户升级的时候直接覆盖升级就行,路由也可生效!无需禁用重启插件。

判断插件是否用了某接口
判断插件某插件已经启动方法如下,估计跟多人都见过了

if (array_key_exists('插件名', Typecho_Plugin::export()['activated'])){echo '已启动某某插件'; }
其实我是想引入Typecho_Plugin::export(),他是个数组,而Typecho_Plugin::export()['activated']就是已启动的插件数组,数组中包含插件都用了哪些接口!

比如判断Widget_Contents_Post_Edit的write接口是否被插件启用

if(empty(Typecho_Plugin::export()['activated']['插件名']['Widget_Contents_Post_Edit:write'])){
echo '没启用';
}
判断没启用后也可以参考上边路由的思路,热更新插件接口!无需禁用重启插件!