blogroll

dimlau

在「链接」页面里加入了 blogroll 板块,将我订阅的中文博客,最近更新的几篇文章展示在这里。

实现方法是这样:我自己搭建了 miniflux 用来订阅 rss 内容,通过它的 api 可以获取特定分类的最新内容。我建了一个 blogroll 分类,把关注的中文博客放进去。然后在 hugo 的相应模板里加入以下代码就可以了。注意其中的 .Site.Data.secret.token 代表 hugo 项目的 data 文件夹里叫做 secret.json 的文件中 token 字段的内容。它是访问 miniflux 的凭证,为了安全起见,妳应该用其他方式来临时生成它而不应该直接上传到服务器。好吧太枯燥了,这里就不再赘述了。

也欢迎发邮件告知妳的博客地址,我很乐意扩充这个 blogroll 列表。

<h5 class="kxt">Blogroll</h5>
<p class="kxd">{{now.Format "2006.01.02 15:04"}} 更新:</p>
<ul>{{ $mytoken := dict "headers" (dict "X-Auth-Token" .Site.Data.secret.token) }}
{{- $data := dict -}}
{{- $newposts:=dict -}}
{{- $url:= print "miniflux-url/v1/categories/4/feeds" "?" now.Unix -}}
{{- with resources.GetRemote $url $mytoken -}}
{{- with .Err -}}
{{- errorf "%s" . -}}
{{- else -}}
{{- $data = . | transform.Unmarshal -}}
{{- end -}}
{{- else -}}
{{- errorf "没能获取到博客列表" -}}
{{- end -}}
{{- range $data -}}{{$:=.}}{{$newpost:=dict}}{{$u:=print "miniflux-url/v1/feeds/" .id "/entries?limit=1&order=id&direction=desc&code=" now.Unix}}
{{- with resources.GetRemote $u $mytoken -}}
{{- with .Err -}}
{{- errorf "%s" . -}}
{{- else -}}
{{- $newpost = . | transform.Unmarshal -}}
{{- end -}}
{{- else -}}
{{- errorf "获取到最新博客文章" -}}
{{- end -}}
{{ with (index (index $newpost "entries") 0) }}
{{- $newposts = merge $newposts (dict (string $.id) .) -}}
{{- end -}} {{- end -}}
{{- range sort $newposts "published_at" "desc" }}
<li>{{ .feed.title }}:<a href="{{.url}}">{{.title}}</a></li>{{ end }}
</ul>

延伸阅读

本站架设在 RamNode VPS

Grav -> Hugo