【服务器】改用Typecho搭建博客
AI摘要:
文章介绍了通过内网部署和使用frp映射的方式,在本地机器上保存Typecho博客数据,以确保数据安全,同时在服务器上搭建备用站点以供断网时使用。具体步骤包括下载typecho,上传到网站目录并进行安装,使用initial主题,并进行一系列的个性化设置和插件安装。魔改部分涉及主题文件、footer.php等的修改,包括修改header.php中的MathJax配置、汉化包的安装、首页摘要限制字符数的更改等。此外,文章还介绍了一系列实用插件和主题魔改,包括文章部分加密、回复可见、置顶、字体更换、IP显示评论ip等功能的插件。整体而言,文章内容详实,适合Typecho博客用户进行站点搭建和个性化设置。
基本配置
- 由于WordPress比较庞杂,功能太多对纯写作有些浪费,转而通过内网部署+frp映射的方式,将数据保存在本地机器上利于数据安全,同时在服务器中搭建备用站点供断网时使用。
- 官网下载typecho,上传到网站目录,访问 网址/install.php 安装,
本站使用initial主题,下载initial主题上传到usr/theme/ 文件夹中,在后台启用即可
- (更新后忽略,但留作备忘)http资源自动升级为https解决浏览器禁用问题:在主题header.php加入
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
- (更新后忽略,但留作备忘)发现header.php中有mathjax但是过期被禁用,将
<script type="text/x-mathjax-config"> MathJax.Hub.Config({ extensions: ["tex2jax.js"], jax: ["input/TeX", "output/HTML-CSS"], tex2jax: { inlineMath: [ ['$','$'], ["\\(","\\)"] ], displayMath: [ ['$$','$$'], ["\\[","\\]"] ], processEscapes: true }, "HTML-CSS": { availableFonts: ["TeX"] } }); </script> <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js? config=TeX-AMS-MML_HTMLorMML"> </script>
改为
<script> MathJax = { tex:{ inlineMath: [["$", "$"]], displayMath: [["$$", "$$"]], }, svg: { fontCache: "global", scale: 0.8, } }; </script> <script type="text/javascript" id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"> </script>
- (更新后忽略,但留作备忘)http资源自动升级为https解决浏览器禁用问题:在主题header.php加入
- 根据主题说明进行个性化设置
在config文件中开启ssl
/** 开启HTTPS */ define('__TYPECHO_SECURE__',true);
(可选)宝塔反代的缓存方式对typecho后台可能有干扰,出现登陆但首页没有相关信息的状况,可选修改反代配置,注意修改配置中的反代地址
#PROXY-START/ location / { #缓存媒体文件 location ~* .jpg|.png|.gif|.jpeg|.ttf|.webp|.woff|.woff2|.ico$ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_pass http://127.0.0.1:7207; proxy_cache cache_one; proxy_cache_valid 30d; proxy_ignore_headers Cache-Control; add_header X-Cache "$upstream_cache_status from $server_addr"; } #缓存css、js location ~* .css|.js$ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_pass http://127.0.0.1:7207; proxy_cache cache_one; proxy_cache_valid 3d; proxy_ignore_headers Cache-Control; add_header X-Cache "$upstream_cache_status from $server_addr"; } proxy_pass http://127.0.0.1:7207; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; #持久化连接相关配置 #proxy_connect_timeout 30s; #proxy_read_timeout 86400s; #proxy_send_timeout 30s; #proxy_http_version 1.1; #proxy_set_header Upgrade $http_upgrade; #proxy_set_header Connection "upgrade"; #add_header X-Cache $upstream_cache_status; #expires 12h; } #PROXY-END/
- 【魔改】修改主题header.php文件中
<a id="logo" href="<?php $this->options->siteUrl(); ?>" rel="home">
标签href内容,实现点击图片跳转到主页(非博客首页)。例如:<a id="logo" href="https://www.zelyo.cn/" rel="home">
实现Typecho数学公式输入。使用了此插件,参考此文章,MathJax.php源码及说明记录如下(修改scale:0.8可改变缩放比例):
<?php /** * MathJax * * @package MathJax * @author zhibi * @version 1.0.1 * @link https://www.drawrain.com */ class MathJax implements Typecho_Plugin_Interface { /** * 激活插件方法,如果激活失败,直接抛出异常 * * @access public * @return void * @throws Typecho_Plugin_Exception */ public static function activate() { Typecho_Plugin::factory('Widget_Archive')->footer = array('MathJax', 'footer'); } /** * 禁用插件方法,如果禁用失败,直接抛出异常 * * @static * @access public * @return void * @throws Typecho_Plugin_Exception */ public static function deactivate() {} /** * 获取插件配置面板 * * @access public * @param Typecho_Widget_Helper_Form $form 配置面板 * @return void */ public static function config(Typecho_Widget_Helper_Form $form){} /** * 个人用户的配置面板 * * @access public * @param Typecho_Widget_Helper_Form $form * @return void */ public static function personalConfig(Typecho_Widget_Helper_Form $form){} /** * 输出尾部js * * @access public * @param unknown $footer * @return unknown */ public static function footer() { echo '<script> MathJax = { tex:{ inlineMath: [["$", "$"]], displayMath: [["$$", "$$"]], }, svg: { fontCache: "global", scale: 0.8, } }; </script> <script type="text/javascript" id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"> </script>'; } }
修改标识符仅支持$、$$,去除了对()、[]的识别,避免对文章其他内容造成影响
行内公式将latex公式包含在$
与$
之间。e.g.欧拉公式为:$e^{i \theta} =cos{\theta}+i \cdot sin{\theta}$
$e^{i \theta} =cos{\theta}+i \cdot sin{\theta}$
段落公式将latex公式包含在$$
与$$
之间。e.g.欧拉公式为: $$e^{i \theta} =cos{\theta}+i \cdot sin{\theta}$$
欧拉公式为:
$$e^{i \theta} =cos{\theta}+i \cdot sin{\theta}$$
需要单独显示含$
内容时需要用行内代码或段落代码表示
MathJax中文文档
Latex公式手册
Latex公式手册新- 【魔改】修改footer.php文件,在ICP备案号之前添加图标:
<p><img src="icp.svg" alt="icp" height="10px"><a href="http://beian.miit.gov.cn" class="icpnum" target="_blank" rel="noreferrer"><?php $this->options->ICPbeian(); ?></a></p>
- 【魔改】编辑器增加ctrl+s自动保存功能,修改
/admin/write-post.php
文件,在最后一个`</div>
后添加如下代码(来自该文章):
<script>
document.addEventListener("keydown", function(e) {
var locked = false,
formAction = $("form").attr('action'),
idInput = $('input[name=cid]'),
cid = idInput.val(),
autoSaveOnce = !!cid,
lastSaveTime = null;
function save(){
// $("#save-message").remove();
// var autoSave = $('<span id="auto-save-message" class="left"></span>').prependTo('.submit');
var autoSave = $("#auto-save-message");
savedData = $("form").serialize();
idInput.val(cid);
var data = $("form").serialize();
if (!locked) {
locked = true;
autoSave.text('<?php _e('正在保存'); ?>');
$.post(formAction, data + '&do=save', function (o) {
savedData = data;
lastSaveTime = o.time;
cid = o.cid;
autoSave.text('<?php _e('已保存'); ?>' + ' (' + o.time + ')').effect('highlight', 1000);
locked = false;
}, 'json');
}
}
//可以判断是不是mac,如果是mac,ctrl变为command
//event.preventDefault() 方法阻止元素发生默认的行为。
if (e.keyCode == 83 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
e.preventDefault();
// $("#btn-save").click();
//changeView("source");
save();
//changeView("visual");
}
})
</script>
实用插件及主题魔改
Typecho文章部分加密功能
使用插件PartiallyPassword,参考此文章。
举例:
不需要密码的内容
不需要密码的内容
不需要密码的内容
不需要密码的内容
密码组填写内容:
{
"0": "123456", //第一块的密码
"喵": "miao~", //第二块的密码
"2": "000000" //第三块的密码
}
更多用法参考GitHub说明页面。
HideTool回复可见插件
下载地址:https://github.com/jclser/HideTool
此处内容需要评论回复后(审核通过)方可阅读。
【魔改】sticky文章置顶插件
下载地址:https://github.com/jazzi/sticky-for-typecho
cid查看方法是在“管理文章”页面,鼠标悬停于你的文章,浏览器底部状态栏即可显示
在 index.php 的 $this->title(); 前面加上 $this->sticky(); 可出现置顶标题的 html
例:
https://github.com/hakula139/UserAgent-for-Typecho
在需要显示的地方插入以下代码:<?php UserAgent_Plugin::render($comments->agent); ?>
建议添加在comments.php中的<b><?php CommentAuthor($comments); ?></b>
下一行RobotsPlusPlus蜘蛛来访记录插件
BaiduTextCensor & SmartSpam反垃圾评论
下载地址:http://www.yovisun.com/archive/typecho-plugin-smartspam.html
下载地址:https://github.com/sy-records/ty-baidu-textcensor
AutoPhotos图片增强插件
下载地址:https://github.com/Rakiendesu/AutoPhotos
【魔改】添加文章最后更新时间
编辑post.php文件,在<li><?php Postviews($this); ?></li>
下一行添加<li>最后更新:<?php echo date('Y-m-d H:i:s', $this->modified);?></li>
【魔改】更改首页摘要限制字符数
编辑index.php和archive.php,将<p><?php $this->excerpt(200, ''); ?></p>
改为:<p><?php $this->excerpt(600, ''); ?></p>
,然后手动再文章中插入<!--more-->
来设置摘要截取终点。archive.php文件会影响选择分类后的页面内容。
iThunb文章缩略图插件(此插件与PartiallyPassword插件冲突,非必需暂时弃用)
下载地址:https://github.com/benzBrake/iThumb
AAEditor编辑器增强插件
下载地址:https://xiamp.net/archives/aaeditor-is-another-typecho-editor-plugin.html/comment-page-11
新功能示例:
音频卡片和音频列表(该功能与initial主题目录功能冲突),已关闭。
m3u8/mp4视频引用及B站视频引用:
多彩按钮:
点此查看
折叠卡片:
codepen和GitHub:
引用站内文章:
多标签:
FontLibs更换字体插件
下载地址:https://github.com/xxhzm/FontLibs
【魔改】Lopwon IP显示评论ip插件
下载地址:https://cloud.tencent.com/developer/article/2301872
发布地址:http://www.lopwon.com/lopwon-ip.html
需要在和UserAgent插件类似地方插入<?php $comments->location(); //LopwonIP ?>
腾讯地图api说明:白名单留空可不限制,同时需要手动分配限额后才能使用。腾讯状态码说明、腾讯地图api管理首页
【魔改】Pageviews &RunTime网站统计插件
显示网站访问次数和运行时间
下载地址:https://github.com/ponycool/typecho-plugins
论坛地址:https://forum.typecho.org/viewtopic.php?t=11519
需要在主题footer.php中ICP相关内容下一行添加<?php PageViews_Plugin::showPageViews(); ?>
和<?php RunTime_Plugin::show(); ?>
进行调用。
这两个插件需要php8.0以上,主要因为代码最后使用了match功能,将对应部分代码改为使用switch语句即可支持旧版php:
public static function humanize(int $views): string
{
return match (true) {
$views > 100000000 => sprintf('%s.0fB+', $views / 100000000),
$views > 1000000 => sprintf('%s.0fM+', $views / 1000000),
$views > 1000 => sprintf('%.0fK+', $views / 1000),
default => sprintf('%s', $views),
};
}
改为:
public static function humanize(int $views): string
{
switch (true) {
case $views > 100000000:
return sprintf('%.0fB+', $views / 100000000);
case $views > 1000000:
return sprintf('%.0fM+', $views / 1000000);
case $views > 1000:
return sprintf('%.0fK+', $views / 1000);
default:
return sprintf('%s', $views);
}
}
match ($format) {
1 => $runTime = 'day + "天"',
2 => $runTime = 'day + "D " + hour + "H " + minute + "M " + second + "S"',
default => $runTime = 'day + "天" + hour + "小时" + minute + "分" + second + "秒"'
};
替换为:
switch ($format) {
case 1:
$runTime = 'day + "天"';
break;
case 2:
$runTime = 'day + "D " + hour + "H " + minute + "M " + second + "S"';
break;
default:
$runTime = 'day + "天" + hour + "小时" + minute + "分" + second + "秒"';
}
否则会出现syntax error, unexpected '=>' (T_DOUBLE_ARROW)
等报错。
Mourn全站变灰插件
下载地址:https://github.com/ponycool/typecho-plugins
插件需要php8.0以上,修改以下代码使之支持低版本php:
public static function mourn(): void
{
$options = Helper::options();
try {
$pluginConfig = $options->plugin(self::$pluginName);
} catch (Exception) {
return;
}
if ($pluginConfig->enabled === '1') {
self::scriptRender();
}
}
替换为
public static function mourn(): void
{
$options = Helper::options();
try {
$pluginConfig = $options->plugin(self::$pluginName);
} catch (Exception $exc) {
return;
}
if ($pluginConfig->enabled === '1') {
self::scriptRender();
}
}
TagsList后台增加标签列表插件
下载地址:https://github.com/ponycool/typecho-plugins
Tp2MD导出文章markdown插件
下载地址:https://github.com/AlanDecode/Typecho-Plugin-Tp2MD
ShortLinks外链转内链插件
下载地址:https://github.com/benzBrake/ShortLinks
Sitemap插件
下载地址:https://github.com/bayunjiang/typecho-sitemap
相关问题说明:Typecho启用sitemap插件,附404和500报错解决方法
备忘:
使用该插件需要添加如下的伪静态设置,否则会出现404错误等问题。
if (!-e $request_filename) { rewrite ^(.*)$ /index.php$1 last; }
- 修改sitemap.xsl文件可以自定义xml文件格式
AIContentSummary人工智能摘要
下载地址:https://github.com/Rockytkg/AIContentSummary
debug相关
开启调试模式
再typecho根目录找到config.inc.php,在其末尾加入:
/** 开启Debug模式 */ define('__TYPECHO_DEBUG__', true);
- AI摘要:
- 基本配置
- 实用插件及主题魔改
- Typecho文章部分加密功能
- HideTool回复可见插件
- 【魔改】sticky文章置顶插件
- RobotsPlusPlus蜘蛛来访记录插件
- BaiduTextCensor & SmartSpam反垃圾评论
- AutoPhotos图片增强插件
- 【魔改】添加文章最后更新时间
- 【魔改】更改首页摘要限制字符数
- iThunb文章缩略图插件(此插件与PartiallyPassword插件冲突,非必需暂时弃用)
- AAEditor编辑器增强插件
- FontLibs更换字体插件
- 【魔改】Lopwon IP显示评论ip插件
- 【魔改】Pageviews &RunTime网站统计插件
- Mourn全站变灰插件
- TagsList后台增加标签列表插件
- Tp2MD导出文章markdown插件
- ShortLinks外链转内链插件
- Sitemap插件
- AIContentSummary人工智能摘要
- debug相关
本站所有原创文章版权所有,禁止转载,欢迎转发文章链接,参考请标明出处并连接到本站相应页面。所有注明的转载内容版权归原作者所有,如不慎侵权请原作者联系本站删除。