迫于找不到合适的模板,用一天时间diy了一个,顺便更换了新的博客系统
此次博客从Wordpress 迁移到了typecho。
更换博客的动因:
我觉得博客的价值在于内容,但是模板这些也很影响体验。我理想中的博客系统,应该是简洁的、支持markdown的;理想中的模板应该是hexo那种简约的,体验良好的,加载速度上应该是极快的。由于博客最开始用的wordpress系统,但是我找遍了全网模板,却发现都是花里胡哨的。而随着访问量的增加,为了提升创作和阅读体验,我决定迁移到typecho
,但是typecho也没有找到满意的模板(可能是我懒),索性自己diy一个。
我喜欢typecho的原因:
- 简洁、轻巧
- 原生支持markdown编辑器
- 方便diy模板
- 国产
DIY过程
首先下载的typecho的程序放到本地开始修改,发现官方自带的模板就很简洁,于是基于官方的模板开始做了如下更改:
细节修改与阅读体验增强:
- 全局背景颜色修改,偏淡黄色
- 全局字体增大
- 更换了字体,使字体接近于宋体
- 修改了很多细节部分的字体大小
- 代码高亮使用heightlight.js 并且选用了 StackOverflow-light风格
- 标签高亮底色修改
排版上的修改:
- 文章页面增加相关文章,增加文章版权信息等。
- 首页排版分为左右两栏,左栏仅展示最新文章、体检阅读,右侧展示分类信息和登录与rss等。
- 搜索结果与分类等页面,修改为仅展示 文章的时间与标题
- 默认的每页数量,从5修改到9(9是阳数,10不是)
迁移工作
鉴于wordpress已经被机器人搞的充满了垃圾评论(即便开了邮箱验证),决定只迁移文章及其图片即可。
但是,官方的迁移插件还停留在2014年,好在typecho的表结构比较简单,自己摸索写了一段PHP,完美迁移。
图片的迁移,将/wp-content/uploads/
下的内容放到/usr/uploads/
即可,然后再执行一段sql。
update typecho_contents set text=replace(text,'wp-content/uploads','usr/uploads')
减少SEO损失
更换系统与模板,是不利于SEO的,如果你的连接全部变了,那就得蜘蛛重新索引一遍。
为了降低SEO损失,特意做了如下处理:
原wordpress的文章格式为 /?p=id
- 在后台修改typecho的格式为,/index.php/archives/{slug}.html,其中的
slug
已经在导入文章的时候做了对应。 - 配置nginx的重写规则,隐藏
/index.php
,路径变为/archives/{slug}.html - 编辑
index.php
,如果接收到一个参数p,则301跳转到对应的typecho路径。
if(isset($_GET['p'])){
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://leehongtao.com/archives/' . $_GET['p']. '.html'.$request_uri);
exit;
}
这样以来,就完美将原搜索引擎索引的地址,跳转到了博客现在对应的内容。
最终效果图:
更换前:
更换后首页:
将wordpress中的文章,转移到typecho
运行环境 php7.0 +
<?php
$servername = "localhost";
// 创建连接
$typecho = mysqli_connect($servername, "root", "pass", "lookcos_cn");
$wordpress = mysqli_connect($servername, "root", "pass", "lookcos_cn");
function insert(mysqli $con_typecho, $cid, $title, $timestamp, $content){
$content = mysqli_real_escape_string($con_typecho,$content);
$sql1 = "INSERT INTO `typecho_contents` (`cid`, `title`, `slug`, `created`, `modified`, `text`, `order`, `authorId`, `template`, `type`, `status`, `password`, `commentsNum`, `allowComment`, `allowPing`, `allowFeed`, `parent`) VALUES
('{$cid}', '{$title}', '{$cid}', '{$timestamp}', '{$timestamp}', '{$content}', '0', '1', NULL, 'post', 'publish', NULL, '0', '1', '1', '1', '0')";
// 尝试插入数据
if (mysqli_query($con_typecho, $sql1)) {
echo $title." 新记录插入成功</br>";
} else {
echo "Error: " .$title. "<br>" . $con_typecho->error;
}
}
// 从wordpress 中读取内容
$sql = "SELECT ID, post_date, post_title, post_content FROM lookcos_posts WHERE post_type='post'";
$result = mysqli_query($wordpress, $sql);
if (mysqli_num_rows($result) > 0) {
// 输出数据
while($row = mysqli_fetch_assoc($result)) {
echo $row['ID']." ".strtotime($row['post_date'])." ".$row['post_title']. " "."</br>";
if($row['post_content'] && $row['post_title']){
insert(
$typecho,
$row['ID'],
$row['post_title'],
strtotime($row['post_date']),
$row['post_content']
);
}
}
}
mysqli_close($wordpress);
?>
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
作者: Austin 发表日期:2021-02-11 13:27
真能折腾……
生命在于折腾
相比以前快的不是一星半点。
看来老哥,是位老朋友了。
我也是老朋友~
这个打开速度相当快
typecho你值得拥有,个人博客非常适用。
我觉的越简单越好,清爽,速度快!
是的
绝了也是,我在v2看到你的贴子,就想着在本地由wp迁移到typ,然后报错,找方案,兜兜转转由看到了你的帖子