Jekyll:是否有添加一些输出 function/templating 的好方法?

Jekyll: is there a good way to add some output function/templating?

我使用 Jekyll 生成一些静态站点,到了需要根据模板和一些参数输出一些信息的地步。最简单的描述方式——输出 font-awesome 标签,写类似 {% fa apple %} 或 @fa-apple 或其他任何东西,而不是 <span class="icon fa fa-apple"></span>。实现此目标的最佳方法是什么?

  1. 使用模板:{% include font-awesome.html icon="fa fa-apple"%}。并没有短多少。
  2. 定义您自己的变量。 {% capture fa_apple %}<span class="icon fa fa-apple"></span>{% endcapture %} {{fa_apple }}。使用时间短,但生成所有捕获很费力。不过,您也许可以将其自动化。
  3. 使用自定义过滤器为 Jekyll 编写您自己的插件:https://jekyllrb.com/docs/plugins/filters/
  4. 使用jekyll-octopod, which includes the wanted filter: {% icon fa-camera-retro %} . If you don't want to use the whole thing, the filter alone can be found here: https://github.com/jekyll-octopod/jekyll-octopod/blob/master/lib/jekyll/font_awesome.rb

#1 和#2 在无法安装插件的 Github 页面上工作,但它们是具有明显缺点的解决方法。 #3 和#4 只能在可以使用插件的环境中工作,但是是更优雅的解决方案。

就我个人而言,我会选择选项 #4,只使用过滤器。它应该很容易提取。如果您使用 GitHub 页面,在本地构建并推送已构建的页面并不太困难。如果您已经在自己构建网站,那么适应它就更容易了。


顺便说一句,减少样板代码的最好方法可能就是切换到 <i class="far fa-address-card"></i>。那是 16 个样板字母。 {% icon fa-camera-retro %} 记录 11 个样板字母,甚至 {% fa fa-camera-retro %} 记录 9 个样板字母。

<span class="icon fa fa-apple"></span> 计时 27 个样板字母。更新 bootstrap 并使用 i 而不是 span 可能是减少样板文件的最简单方法。