Typecho 文档:判断插件是否有设置项

11月07日

适用程序: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>';
    }

store