Typecho主题/插件开发教程汇聚地

分类 TE开发 下的文章

时隔这么久,终于迎来了 typecho 的1.1版本,就在3个小时前,1.1正式版只是发布。

Typecho 1.1版的大的改进如下所示:

修复两个高危的漏洞(XMLRPC的和安装文件的),大家在升级时请覆盖原有的根目录下的install.php文件
新增了备份功能
新增了若干的插件钩子和特性
修正了上一个版本以来的大量错误
新增了Mysqli适配器
增加夏令时支持
修正了反垃圾的措施,自带的反垃圾方法已经能够挡掉绝大部分机器人了
替换了 Markdown 解析引擎,保证预览与实际效果严格一致

早安。如果有需要 Typecho 方面的模板定制、二次开发 欢迎联系我。

简介

2017年10月13日,Typecho爆出前台代码执行漏洞,知道创宇404团队研究人员成功复现了该漏洞。

经过分析确认,该漏洞可以无限制执行代码,通过这种方式可以导致getshell。

解决方法

安装完之后一定要删除 install 目录

typecho是个好东西,用来开发许多企业网站十分方便。对于不少模板会用到“相关文章”、“推荐文章”等功能 typecho 本身也已经提供相关功能函数,只需要直接调用即可,十分方便快捷。

相关文章的调用如下:
用文本编辑器或网站后台的外观打开你所要修改的模板的文件夹中的post.php文件,并在合适的位置加入如下代码:

<?php $this->related(5)->to($relatedPosts); ?>
    <ul>
    <?php while ($relatedPosts->next()): ?>
    <li><a href="<?php $relatedPosts->permalink(); ?>" title="<?php $relatedPosts->title(); ?>"><?php $relatedPosts->title(); ?></a></li>
    <?php endwhile; ?>
</ul>

参数名称 说明 $limits 默认值为 5,表示显示的相关文章数量 $type 默认值为 NULL,表示文章的相关方式,只接受
author。当 $type 为 author 时,根据用户显示相关文章;为其他值时,根据标签显示相关文章。 希望对大家有用。

今天接了一个简单的typecho二次开发的单子,需要用到获取Typecho显示当前文章所属分类目录名称/SLUG的相关功能,我通过分析 typecho 的 $this 找到了相关调用方法,现在来分享一下:

获取Typecho显示当前文章所属分类目录名称:

<?php print_r($this->category());?>

是的这是一个PHP的数组,由于我制作的实例每一篇文章只有一个分类,就直接使用 print_r 无问题。

获取Typecho显示当前文章所属分类目录SLUG:

<?php print_r($this->category);?>

很简单吧,很实用,希望对大家有所帮助。如果有typecho二次开发相关也可以联系我。

今天制作某套企业主题时,需要用到这个知识点,特地记录一下备用。

编辑当前typecho主题模板,在要调用某分类目录的位置添加以下代码

<?php $this->widget('Widget_Archive@index', 'pageSize=6&type=category', 'mid=3')->parse('<li>{title}</li>'); ?>

其中pageSize后面的数字表示调用文章的数量;mid后面的数字表示调用的分类ID;

对于Typecho分类目录ID的获取,则只需把鼠标移到某分类名称上面,在浏览器状态栏显示的mid=后面的数字便是该分类目录ID。

希望对大家有所帮助,也换来来找我定做主题哦

由于某些缘故,本站脱离原来的香港VPS,来到Vultr。
在搬家之后,出现白屏,500错误。打开debug之后出现如下错误:
最终还是被我成功解决了,方法大体如下:

用typecho在github的开发版,强制覆盖替换,删config.inc.php,重装,选择保留原数据,完全OK,网站首页已经可以进入。

接着发现在后台更换回原主题时,出现Call to undefined function token_get_all()错误,回VPS安装php7-tokenizer扩展,重启 php-fpm,成功解决。

希望对广大朋友有所帮助。

最后醒醒,本站已经搬移到某校主机商的空间上!

这个方法适用于已经安装好上线的老站点,升级到php7之后无法使用的情况。通常是因为php7取消mysql函数的原因,按照下没做过方法修改可以让你的typecho站点满血复活支持 php7。

在 config.inc.php 文件中修改如下代码即可
查找以下代码

$db = new Typecho_Db('Mysql', 'typecho_');

修改为

$db = new Typecho_Db('Pdo_Mysql', 'typecho_');