#模版#

Bitcron模板:如何添加标签云

虽然并没有技术可言,就当自己做个笔记吧,搞博客这么多年,前前后后也换了好多平台,模板也自己折腾了一些,并没有留下什么,实在惭愧啊。

所谓的标签云就是一堆标签链接,可能在一起看起来像一坨云?Bitcron 提供了获取网站所有标签的方法site.tags,然后在遍历生成链接就可以咯。

for tag_name, tag_count in site.tags
    a(href="/tag/{{tag_name|urlencode()}}")= tag_name

这里用urlencode()编码了一下tag_name,因为如果出现'C#'这种标签的话,不编码会链接到'C'标签。

为了体现标签下的文章多少,可以通过tag_count来设置链接字体的大小,玩得转的还可以设置颜色啊字体粗细什么的。

for tag_name, tag_count in site.tags
    a(href="/tag/{{tag_name|urlencode()}}",style="font-size: {{tag_count*1.5+12 }}px;")= tag_name

最后效果大概就是这样!
tags-cloud

Farbox 进化成了Bitcron

什么是 Bitcron

Bitcron 就是 Farbox 的作者的最新作品,整体功能都差不多,如果你只是单纯的写作的话,和 Farbox 一样一样的。

全程 Https 加密

逼格提升!所有 bitcron.com 下的二级域名,都默认开启了 HTTPS,即使是独立域名,Bitcron 也会自动完成Let's Encrypt SSL 的申请和部署,只需要访问 https://自己的域名即可(一般需要第二次访问的时候才会生效)。

Bitcron 的模版

模版只支持 Jade了,api相对Farbox来说优化了很多,目前并不能兼容Farbox的模版,骚年的,折腾吧。

扒了一个Hexo模版

来只另一个博客程序Hexo,这个模板貌似人气很高。。。名为Next,源项目在这里,感谢作者的设计。目前自己用的代码太乱,所以暂时不支持克隆,等空了复刻一个Farbox能通用的出来。

Farbox 不同的分类使用不同的模版

案例

网站template目录下新建一个funny.html的文件,欲作为站点分类(根目录下的funny文件夹)“趣事”的所有日志合集,也就是funny.html 文件内要调用funny文件夹内的所有文章不想有其他分类文章出现,想问下代码要怎么写。

分析

实际就是获取特定路径path下的文章post
最新的 Farbox 整合了获取数据的方法,无论是获取文章还是分类都使用get_data()这个函数。这里需要传递typepath两个参数,get_data(type='post',path='funny/')
<!--more-->

解决方案

方案一
按照案例的要求,当访问funny.html时输出funny文件夹下的文章。

{% set posts = get_data(type='post',path='funny/') %}
{% for post in posts %}
...
{% endfor %}

方案二
为了让逻辑更清晰,建议在category.html里根据分类名category.title来调用不同的模板。

{% if category.title == 'funny' %}
{% include 'funny.html' %}
{% else %}
...
{% endif %}

Farbox 模版如何设置分类的关键词和描述

既然折腾网站,就总想着怎样更快被收录,但简单的 Farbox 针对搜索引擎优化并没有太多的支持,例如给分类添加关键词和描述。那么 Farbox 模版里如何设置分类页面的关键词和描述呢?

官方 API 里提到有专门配置日志默认属性的文件index.txt,同时这个数据对象会作为它所在目录的扩展属性。我们知道 Farbox 的文件夹就是分类,所以我们就可以在index.txt这个文件里设置分类的一些属性啦。
<!--more-->

例如有Farbox/index.txt这个文件:

title:Farbox
keywords:Farbox,Farbox模版
description:Farbox 的教程

我们在分类页面模版category.html里就可以通过category.metadata.keywordscategory.metadata.description来获取 对应分类的关键词和描述。

{% extends 'base.html' %}
{% block keywords %}<meta name="keywords" content="{{ category.metadata.keywords }}"/>{% endblock %}
{% block description %}<meta name="description" content="{{ category.metadata.description }}"/>{% endblock %}