Jekyll 使用记录

常阳时光(SYN)已删除 2015-08-26)基本上能正常运行了,趁热打铁,把折腾的一些过程记录一下,算是笔记吧。需要的网友也可以参考一下。PS:可能会有些非常非常业余的代码,所以参考的自己看着办吧。

<!--more--> 标签

我在 WordPress 发布的所有文章,都在第一段后手工加了 <!--more--> 标签,这样首页内容能带 html 样式显示(WordPress 自动截断会把样式都去掉,虽然高度看起来统一了,但是内容看起来可能就怪怪的了)。Jekyll 会自动取每篇文章从开头到第一次出现 excerpt_separator 的地方作为文章的摘要。 如果没有配置 excerpt_separator,Jekyll 默认会截取文章第一段作为摘要。我用的是这个方法,所以把 WordPress 导出的文章的 <!--more--> 标签批量删除掉了。

如果想自己控制输出多段,可以在需要截断的地方添加 <!--more--> 标签,并且在 _config.yml 文件中添加配置:excerpt_separator: "<!--more-->"

当然,也可以像 WordPress 那样添加 <!--more--> 标签,并添加 Read More 链接。使用下面的代码就可以了,原文(没有测试)

{% if post.content contains '<!--more-->' %}
{{ post.content | split:'<!--more-->' | first }}
<p class="more"><a href="{{ post.url }}">Read More &raquo;</a></p>
{% else %}
{{ post.excerpt }}
{% endif %}

详细请参考:官方文档

分页功能

Jekyll 目前只能对首页进行分页,分类/标签下的文章无法分页,如有方法能实现,请留言告知,谢谢。

开启分页功能很简单,只需要在 _config.yml 里面添加一行 paginate 配置每页显示多少篇文章即可。如,每页最多显示 8 篇文章,添加如下代码即可。

paginate: 8

下面我的分页代码,修改自:V2EX,代码放到 index.html 恰当位置即可。

  <div id="post-pagination" class="pagination">
{% if paginator.page == 1 %}
<span class="page-numbers current">1</span>
{% else %}
<a class="page-numbers" href="/">1</a>
{% endif %}

{% assign pageSize = 2 %}
{% assign startPage = paginator.page | minus:pageSize %}
{% if 2 > startPage %}
{% assign startPage = 2 %}
{% endif %}
{% assign endPage = paginator.page | plus:pageSize %}
{% if endPage >= paginator.total_pages %}
{% assign endPage = paginator.total_pages | minus:1 %}
{% endif %}

{% assign pageTemp = pageSize | plus:2 %}
{% if paginator.page > pageTemp %}
<span class="page-numbers dots"></span>
{% endif %}

{% for count in (startPage..endPage) %}
{% if count == paginator.page %}
<span class="page-numbers current">{{ count }}</span>
{% else %}
<a class="page-numbers" href="/page{{ count }}">{{ count }}</a>
{% endif %}
{% endfor %}

{% assign pageTemp1 = pageSize | plus:1 %}
{% assign pageTemp = paginator.page | plus:pageTemp1 %}
{% if paginator.total_pages > pageTemp %}
<span class="page-numbers dots"></span>
{% endif %}

{% if paginator.page == paginator.total_pages %}
<span class="page-numbers current">{{paginator.total_pages}}</span>
{% else %}
<a class="page-numbers" href="/page{{paginator.total_pages}}/">{{paginator.total_pages}}</a>
{% endif %}

</div>

参考 CSS:

/*分页*/
.pagination {font-size: 14px;margin-top: 18px; text-align: center; }
.pagination .page-numbers{color:#111;display: inline-block;text-align: center;width: 24px;line-height:24px;margin:5px;background: #E4E5E1;}
.pagination .page-numbers.current{ background: #c30;color:#fff;}
.pagination .page-numbers.dots{border-color:rgba(0,0,0,0)}

效果如下图,修改 pageSize 值即可控制当前页前后输出的页码数。

详细参考:官方文档非官方中文(翻译不是很准确)

分类 & 标签功能

Jekyll 的分类和标签功能没有 WordPress 完善,凑合着用吧。

模板代码和样式参考自:谢益辉 & 天涯孤鸟

评论

必须得用第三方评论系统,这个是最大的硬伤,若不是,我可能彻底投奔 Jekyll 了。 国外的 Disqus 感觉更有节操,不过国内加载实在是太慢了。所以放弃了 Disqus + 多说 两种评论框一起用。

RSS

代码来自:jekyll-rss-feeds,只针对个人模板配置小改了一下——site.name 改为 site.title,需根据个人配置修改。

代码就不贴了,需要的可以到 Github 看源文件。

sitemap

对于 sitemap,WordPress 是安装插件解决的,Jekyll 好像也可以安装插件解决,比如:jekyll-sitemap,不过我是没有折腾成功。如果你愿意,也可以试试这个插件

不过我现在用的是免插件方法:Generating a Sitemap in Jekyll without a Plugin

SEO 优化

这个不大懂,目前只优化了一下网页 title,分页加上了"第 xx 页"字样。用下面的代码替换掉原始的 …… 之间的 title 代码即可。

    <title>
{% if page.title %}{{ page.title | strip_html }} &#8211; {% endif %}
{{ site.title | strip_html }}
{% if paginator.page > 1 %}
&#8211; 第 {{ paginator.page | strip_html }} 页
{% endif %}
{% if page.layout == 'default' %}&#8211; {{ site.description | strip_html }} {% endif %}
</title>

除非注明,沙唐桔文章均为原创,本文地址 https://cyhour.com/189/,转载时必须以链接形式注明原始出处。
声明:我们不销售主机,选主机需合法使用。任何主机需定期备份,防止数据丢失。信息以实际为准,评测仅供参考不代表权威!

WordPress 数据库常用 SQL 语句

WordPress 数据库存储了站点所有信息,数据库对站点来说至关重要,一般情况下不要折腾数据库。但是很多情况下,使用 SQL 语句批量修改站点内容,大大提高效率。下面 SQL 语句均收集自网络,操作需谨慎。所有的SQL语句都是假定你的数据库的前缀是"wp_" ,如果你使用不同的表前缀,请自行修改。 温馨…
浏览: 138 标签:  , 

CentOS 7.9.2009 PHP 7.1.12 升级到 PHP 8.0.1

前阵子在闲置 VPS 和垃圾站环境试过将 PHP 7.1.12 升级到 PHP 8.0.0,看起来没什么问题,只是 fileinfo 扩展没能折腾上。 昨天在 BuyVM 1核 512MB AMD CPU VPS 上又测试了一遍,参考网友方法,fileinfo 也开启成功了,忍不住把博客环境也升级一下,估计最多一个小时就能搞定。 然而实际花了4个…
浏览: 89 标签:  ,  ,  , 

OneinStack php 7.4.12 升级 php 8.0.0

2020-11-26,PHP 8.0.0 正式版发布,WordPress 5.6 昨天出来了,开始支持 PHP 8,今天看到博友说 1G 内存也能跑 PHP7、PHP8 共存,忍不住在探针站试着升级了一下。 OneinStack 自带 php 升级脚本,不过并不支持跨版本升级,比如无法从 php 7.4.12 升级到 php 8.0.0,参考「OneinStack php 7.3.…
浏览: 61 标签:  ,  ,  ,  , 

rclone 挂载优化~

rclone 是一个命令行程序,支持 Windows、Linux、MacOS 等操作系统,可挂载多达 40 多种网盘网络存储,老杨一直在用它来备份 Google Photos 到 OneDrive,隔壁大佬 xiaoz 新写了篇文章介绍 rclone 的一些说明和注意事项(优化)。挺实用,就贴过来了。 安装 rclone rclone官网:https://rcl…
浏览: 40 标签:  ,  ,  , 
浏览: 46 标签:  ,  ,  , 

Comments:4

  1. 个人觉得此类的静态博客完全属于一个玩具。

    2015.08.06 14:36 # 回复
    1楼
    • @寒烟 作为一个安心写文字的地方,Jekyll 还是挺不错的,基本功能与 WordPress 是一样的,只是资源没那么丰富。

      2015.08.06 15:45 # 回复
  2. 欢迎加入 hard 模式大家庭。

    2015.08.12 02:53 # 回复
    2楼

发表留言

Vultr 送$100,搬瓦工年付最低$49,优惠码 BWH3HYATVBJW,更多推荐VPS信息