杰基尔,液体,随机数

ran*_*c78 11 random liquid jekyll

我想有一套链接

<li>
  <h2>Random Articles</h2>  
  <ul>
    <li><a href="#">Old article 1</a></li>
    <li><a href="#">Old article 1</a></li>
    <li><a href="#">Old article 1</a></li>
  </ul>
</li>
Run Code Online (Sandbox Code Playgroud)

但我想从随机选择的帖子中生成链接.我正在使用jekyll和liquid来生成网站.我必须使用jekyll的内置部分,因为我在github上托管.我不确定从哪里开始.谷歌搜索的主题毫无结果.

kno*_*eld 17

这是从_data中的JSON文件中选择一个随机引用,但原则也适用于您的帖子:

{% assign random = site.time | date: "%s%N" | modulo: site.data.inspirational-quotes.size %}

<blockquote>&ldquo;{{ site.data.inspirational-quotes[random].quote }}&rdquo; <cite>{{ site.data.inspirational-quotes[random].person }}</cite></blockquote>
Run Code Online (Sandbox Code Playgroud)

  • 是的,Jekyll是一个静态站点生成器,所以在构建时间之外不能做任何动态. (4认同)
  • 而不是使用时间/日期我使用了page.title.size,它允许它在include中工作(时间/日期在每一个上都相同).我用它在文章/页面的底部放置随机广告/消息. (3认同)
  • 此更改始终有效还是仅在重建整个站点时有效? (2认同)

use*_*028 7

我发现本文对于使用Liquid生成数字很有用,尽管这不是直接的,但它是生成带有最小/最大值的随机数的最优雅的方法。

以下示例适用于65到80之间的数字。

{% assign min = 65 %}
{% assign max = 80 %}
{% assign diff = max | minus: min %}
{% assign randomNumber = "now" | date: "%N" | modulo: diff | plus: min %}
Run Code Online (Sandbox Code Playgroud)


Pet*_*ehr 3

我有类似的愿望,并开始定义一个自定义 Liquid 标签(请参阅http://github.com/mojombo/jekyll/wiki/Plugins),该标签通过它访问帖子context.registers并随机选择帖子,但请注意,一旦 Jekyll 生成了您的网站,该随机选择保持静态,直到站点重新生成。我建议一个不同的选择:让 Jekyll 将所有这些帖子链接写入 JavaScript 中的一个数组(包含在布局中内联),该数组被打乱,然后前三个链接显示在页面上。您甚至可以增强这一点,以便通过调用使这三个链接与数组中的其他链接一起旋转setInterval()。这不是最优雅的解决方案,但动态生成随机内容似乎不太符合 Jekyll 的设计理念。