说明

在Typecho系统中,有的魔改需要将代码放入functions.php文件中。有些主题的文件被加了密,我们要怎么办呢?
解决办法是:我们可以直接建立一个新的functions.php文件然后引入,我在Typecho中文网找到了functions.php文件的实现原理。
看完原理后我就尝试了新建一个同效果的functions.php文件

博客环境

  • Typecho:1.1版本 (17.10.30)
  • 主题:handsome6.0

第一步 添加代码

打开typecho目录/typecho/1.1-17.10.30-release/build/var/Widget/Archive.php文件,在execute()函数中,即1.1版本大概在1373行,有如下代码:

 /** 初始化皮肤函数 */
        $functionsFile = $this->_themeDir . 'functions.php';
        if ((!$this->_invokeFromOutside || $this->parameter->type == 404) && file_exists($functionsFile)) {
            require_once $functionsFile;
            if (function_exists('themeInit')) {
                themeInit($this);
            }
        }

我们需要复制它并粘贴在其下面,进行修改就行了就是重新定义个新的执行我们新建的functions.php文件,修改如下:

/** 初始化皮肤函数 */
$functionsFile = $this->_themeDir . 'functions.php';
if ((!$this->_invokeFromOutside || $this->parameter->type == 404) && file_exists($functionsFile)) {
    require_once $functionsFile;
    if (function_exists('themeInit')) {
        themeInit($this);
    }
}

// 下面的代码块就是我们要新添加的同效functions.php文件函数。

/** 初始化皮肤函数2(指向我们新建的functions.php文件) */
$functionsFile01 = $this->_themeDir . 'functions2.php';
if ((!$this->_invokeFromOutside || $this->parameter->type == 404) && file_exists($functionsFile2)) {
    require_once $functionsFile2;
}

functionsFile2是该函数的名称,在该文件外不会使用,可以随意修改,一共有三处要修改的地方,名字相同。
functions2.php是我们要创建functions.php同效文件的文件名

第二步 创建文件

在我们使用的主题目录(我以handsome为例)usr/themes/handsome/中创建functions2.php文件(创建的文件名就是我们上面修改的.php文件名),创建后打开,php表示格式如下:

<?php
if (!defined('__TYPECHO_ROOT_DIR__')) exit;

//代码

?>

将需要放入functions.php文件内的代码放入到这里

参考Typecho中文网作者雷鬼的文章:《Typecho的functions.php》

Last modification:April 23rd, 2020 at 04:36 pm
如果觉得我的文章对你有用,请随意赞赏
欢迎在评论区打卡!