R 语言将博客全部从 WordPress 搬家到 Hugo | Migrating WordPress to Hugo with RsteemCreated with Sketch.

in #cn7 years ago

从今天起,我的旧博客 dapengde.com 停止更新。旧博客的全部帖子已经搬到了 pzhao.org,欢迎收藏(ctrl + d)和订阅

半年多以前,我用 R 语言的 blogdown 包搭建了新网站,与旧博客并存至今。当时我就说,我要等着益辉同学把blogdown 的使用说明书“迁站”一章写好,就照步骤把旧博客内容全搬过去。前些日子,blogdown 书终于出版了,从 wordpress 搬到 hugo 的迁站方法写得很详细。迁站的时机成熟了。

然而,迁站的过程并不是很顺利。我照着书里推荐的步骤,试图用 travis-exitwp 将 wordpress 导出的 xml 文件转换成 Hugo 的markdown 文件。前面都还好,到了最后一步(第8步),我始终得不到右下角的绿色对勾,自然也得不到文件的下载链接。起初我以为是 xml 文件太大的缘故(10 M,五百多篇帖子),于是试着只导出少量帖子来生成 xml,从头操作,但是一觉睡醒还没得到下载链接。

于是改变策略,我给 wordpress 博客安装了插件 wordpress-to-hugo-exporter,直接将帖子导出为 Hugo 的markdown 格式。除了文件名里的中文乱码外,我相当满意。于是将文件批量重命名,只保留日期。文件内容可以用益辉写的 convert.R 代码来清理。

不过,对我来说仍然不够,看来还得自己动手,才能丰衣足食。因为我用的是 hugo-academic 主题,网页上会显示每篇帖子的摘要,需要每篇帖子的 yaml 里设置一个 “summary” 条目。这个好办,用 R 语言把每篇帖子的第一段摘出来当作 summary 插进去就行了(R 代码附后)。

此外,我还想在每篇帖子末尾增添一个“原文链接”,链到旧博客,万一哪篇帖子格式没转好呢?这也好吧,markdown 的 yaml 里有个 url 条目,稍微改一下插到文末就行了(R 代码附后)。

这就是 hugo 静态网站的好处。有 R 语言在手,以后我就可以对这些 markdown 格式的帖子为所欲为了。而且,GitHub、简书、 steemit、Stackoverflow、统计之都等诸多网站都原生支持 markdown, 发的帖子只需稍微整理,就能发到博客上,颇有万佛朝宗的盛况。

Hugo-academic 主题我很满意,唯一不足的是缺个归档页面,一目了然展示全部帖子清单。看来得以后自己动手做一个。

旧博客 dapengde.com 虽然不更新了,但会仍然放在那里,发挥余热。前些天,还有朋友来我四年前写的帖子后面留言呢。

增加 summary 和原文链接的代码:

for (i in dir('postold')){
  txt <- readLines(paste0('postold/', i), encoding = 'UTF-8')
  summ <- txt[grep('---', txt)[2]+1]
  summ <- gsub('"', '', summ)
  newline <- paste0('summary: "', summ, '"')
  linkzh <- '原文链接'
  newline2 <- paste0('\n[', linkzh, '](http://dapengde.com', substring(txt[grep('url', txt)[1]], 6), ')\n')
  txtnew <- c(txt[1:3], newline,  txt[4:length(txt)], newline2)
  writeLines(txtnew, paste0('postnew/', i), useBytes = TRUE)
}
Sort:  

我们又见面喽!请接受cn区点赞机器人 @cnbuddy 对你作为cn区一员的感谢。让我们携手努力,共同促进cn区快速发展。更多cn区动态,请留意我的主页。欢迎关注我们的大股东 @skenan,并注册使用由其开发的 CNsteem.com。如果不想再收到我的留言,请回复“取消”。

The Vote For Your Awesome Post Has Just Arrived!


This post has been voted with the use of SteemiTag. Feel free to upvote this comment if you’d like to express your support for our cause. Conversely, if you don’t want to receive any more votes from SteemiTag, please respond to this comment by writing NOVOTES.

SteemiTag is an innovative program that helps users increase their gains in the curation rewards by voting on posts that are likely to get high payouts. It maximizes the chance of a user to be rewarded through an accurate selection algorithm that works 24/7 and eliminates "no rewards" problem for users with low Steem Power. You can participate in our program by clicking on this link and confirming your delegation. Your rewards will be sent to you in the form of weekly dividends. Thank you and keep up with your great work!

hugo还是挺好用的,平常维护也方便一些~

是的。就是喜欢纯文本!

Coin Marketplace

STEEM 0.16
TRX 0.16
JST 0.030
BTC 57393.77
ETH 2439.11
USDT 1.00
SBD 2.33