简单说明

在Typecho系统中,有些主题下的functions.php文件被加了密,但有的魔改又需要将代码放入functions.php文件中。
据说可以直接建立一个php文件然后引入,但由于我没有学过php不知道怎么引入,搜百度也没找到,于是我决定啃主题设计方法。最终在Typecho中文网找到了functions.php文件的实现原理。
看完原理后我就尝试了新建一个同效果的functions.php文件,结果成功了。

博主环境

Typecho版本:1.1 (17.10.30)
测试主题:handsome6.0
php7

实现方式

第一种方法(简单)
步骤1.在typecho主题下的component文件夹中建立一个xxx.php文件,以标签总数为例:

<?php
//标签总数
function biaoqianzongshu() {
Typecho_Widget::widget('Widget_Metas_Tag_Cloud')->to($tags);
$z=0;
if($tags->have()) {
    while ($tags->next()){
       $z++;
    }
} 
$unit = '个';
$tagsSum =sprintf('%.0lf %s',$z, $unit);
return $tagsSum;
}
?>

步骤2.再在同目录下的header.php文件中加入如下代码:

<?php include_once('aaa.php'); ?> //在 <!DOCTYPE HTML> 上方加入这一句

<!DOCTYPE HTML>
<?php echo Content::exportHtmlTag($this->options->indexsetup)?> lang="<?php _me("zh-cmn-Hans") ?>">

第二种方法(麻烦)

步骤1.打开typecho安装目录var/Widget/中的Archive.php文件,搜索functionsFile(typecho1.1版本大概在1373行),然后我们就会看到/** 初始化皮肤函数 */的注释,这串代码就是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);
}
}

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

这其中,/** 初始化皮肤函数01 */下面的代码块就是我们要新添加的同效functions.php文件函数。

functionsFile01是该函数的名称,在该文件外不会使用,可以随意修改,一共有三处要修改的地方,名字相同。
functions01.php是我们要创建functions.php同效文件的文件名,可以随意修改,但一定要记住,呆会还要创建它。
这两个名称注意区分,一个带File,一个不带File,我们待会要创建的是不带File的,还有File是我为了给你们区分才说的,你们修改的时候可以都不带。修改完以后记得保存,然后退出。

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

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

//浏览总数
function theAllViews(){
$db = Typecho_Db::get();
$row = $db->fetchAll('SELECT SUM(VIEWS) FROM `typecho_contents`');
    echo number_format($row[0]['SUM(VIEWS)']);}

?>

将原本需要放入functions.php文件内的代码块放入到这里即可。
浏览总数代码块是我演示给你们看的,不会调用就不要照搬,有什么要用的就像浏览总数这样摆放即可。
本文转自:衰兰送客

Last modification:May 26th, 2020 at 11:14 am
如果觉得文章对你有所帮助,请随意赞赏!