Typecho插件编写记录(后台添加文件管理器)

12小时前 · CodeNote · 18次阅读

前段时间把博客迁移到好友祭酒的服务器,在文件管理方面有一些问题,然后找到了基于PHP的文件管理器开源项目:TinyFileManager,然后突发奇想把这个项目通过插件融合进后台,但是很多专栏需要收费&写的不适合小白,故自行摸索并写了这篇文章,文中可能会有不正确的解释及不符合规范的写法,欢迎在评论区中指正。

如您对插件开发记录不感兴趣,直接下载以上文件并安装插件即可,请对目录设置可读写权限,同时建议安装PHP拓展:fileinfo、iconv、mbstring、zip、tar

Plugin.php

插件信息的注释无需过多赘述,首先照猫画虎,写一个

class TinyFileManager_Plugin implements Typecho_Plugin_Interface{}

后续内容都是需要在{}之内,文件开头需要<?php,末尾不需要?>

告诉Typecho如何激活插件:

public static function activate(){}

有激活方法也得有禁用方法,不然会拉坨大的:

public static function deactivate(){}

在这里我使用addPanel

class TinyFileManager_Plugin implements Typecho_Plugin_Interface
{
    public static function activate()
    {
        Helper::addPanel(3, 'TinyFileManager/panel.php', '文件管理', '文件管理器', 'administrator');
    }
    
    public static function deactivate()
    {
        Helper::removePanel(3, 'TinyFileManager/panel.php');
    }

    public static function config(Typecho_Widget_Helper_Form $form){}
    public static function personalConfig(Typecho_Widget_Helper_Form $form){}
}

很容易看出来addPanel使用的方法

Helper::addPanel(面板添加的位置(即菜单中正数第几行),'文件路径', '菜单中的名字', '进入后的标题', '允许进入的用户权限');

注意,同时需要在插件禁用方法中写removePanel

panel.php

本来是想按照TinyFileManager官方文档中的写法嵌入,但是会报错500,因此这里使用iframe并使其全屏显示。
需要包括header.php menu.php copyright.php common-js.php footer.php

<?php
include 'header.php';
include 'menu.php';
?>
<style>
    iframe {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        border: none;
    }
</style>
<iframe id="tinyfilemanager" src="../usr/plugins/TinyFileManager/tinyfilemanager.php" frameborder="0"></iframe>
<?php
include 'common-js.php';
include 'footer.php';
?>

其他关于TinyFileManager的修改

将用户密码部分改为

include 'password.php';
$auth_users = array(
    'admin' => password_hash($pwd, PASSWORD_DEFAULT)
);

由于public static function config(Typecho_Widget_Helper_Form $form){}还没研究明白因此暂时不支持自定义密码
引导用户执行initialize.php文件,如果未存在password.php则随机生成一个字符串并创建该文件

<?php
function generate_password() {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $password = '';
    for ($i = 0; $i < 12; $i++) {
        $index = rand(0, strlen($characters) - 1);
        $password .= $characters[$index];
    }
    return $password;
}

if (file_exists('password.php')) {
    echo "初始化失败!password.php已存在!";
} else {
    $password = generate_password();
    $file_content = "<?php\n\$pwd = '" . $password . "';";

    file_put_contents('password.php', $file_content);

    echo "初始化成功!</br>您的账户为:admin</br>您的密码为:" . $password;
}
?>
👍 2 支持 ☕
支持 ☕

none

最后修改于49分钟前

评论

贴吧 狗头 原神 小黄脸
收起

贴吧

  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡

狗头

  • 狗头
  • 狗头
  • 狗头
  • 狗头
  • 狗头
  • 狗头
  • 狗头
  • 狗头
  • 狗头
  • 狗头
  • 狗头
  • 狗头

原神

  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神

小黄脸

  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸

目录

avatar

東亰藍調

众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。

20

文章数

13

评论数

3

分类