Typecho 文档:判断插件是否有设置项
适用程序:Typecho
程序版本:1.2.1
文档作者:Lopwon
作者博客:Lopwon.com
发布页面:Lopwon.com/attachment/3836/
许可方式:CC BY-NC-SA
注意:此文档源于作者在博客改造中的一些经验总结,转载还请署名。
敬告:此文档操作涉及程序核心文件的修改,作者不对你在使用中产生的任何问题造成的不良后果,承担责任。
文档说明
在制作用于备份插件设置的插件 Lopwon Backup 时,有一个需求:判断插件是否有设置项,如果有则输出该插件的设置页面链接,反之,则显示「无设置项」。
在已知的方式中,似乎无法直接达成,只好进入数据库查看可能性:既然可以通过 $this->options->title
获取博客的名称,那么能否使用 $this->options->plugin:LopwonBackup
获取插件的设置项呢,显然不行。只好又去查看 Typecho 源文件,在多次尝试后找到了两种方式,可以快速的获取插件的设置项,而无需再使用 Typecho_Db::get();
关键代码
$plugin = Typecho_Plugin::export(); // 获取所有已启用的插件信息
$pluginName = array_keys($plugin['activated']); // 获取已启用的插件名称(文件夹名称)
foreach ($pluginName as $name) { // 遍历每个插件
$pluginValue = Helper::options()->{ 'plugin:' . $name }; // 获取插件设置数据(方式一)
// $pluginValue = Helper::options()->__get('plugin:' . $name); // 获取插件设置数据(方式二)
if (empty($pluginValue)) { // 如果插件设置项为空
echo $name . ' 无设置项<br>';
continue;
}
$pluginLink = Helper::options()->adminUrl . 'options-plugin.php?config=' . $name; // 插件设置页面
echo $name . ' 有设置项 ' . $pluginLink . '<br>';
}