【问题标题】:Automatically set date in the front matter of a Jekyll page在 Jekyll 页面的前端自动设置日期
【发布时间】:2020-04-07 18:02:27
【问题描述】:

当我创建一个帖子时,我必须在前面插入布局、标题、日期等。我关心的是date 前面的内容。在日期字段中手动插入date timetime offset 非常不方便。

我无法弄清楚如何自动执行此操作。我想让前面的date随着系统时间自动更新。

【问题讨论】:

    标签: github jekyll


    【解决方案1】:

    front matter 中的 date 变量是一个可选变量,您可以将其设置为能够覆盖根据 Jekyll 查找的内容(即2019-12-14-post-title.md)。它应该只指最初发布帖子的日期,不是当前系统日期。除了某些极端情况,你真的不应该在前面定义date

    您可以使用Liquid templating 将当前时间发布到页面,方法是将"now" 关键字传递给您的液体模板中的date,如下所示:

    This page was last updated at {{ "now" | date: "%Y-%m-%d %H:%M" }}.
    

    获取输出:

    This page was last updated at 2019-12-14 17:48.
    

    但是,这种方法对于 Jekyll 的使用有一个很大的缺点,因为它会引用模板中上次生成页面的时间的当前日期,而不是用户访问页面的时间。

    访问当前系统时间的最佳方式可能是改用 javascript。根据您对语言的熟悉程度,这相当容易,但基本上您可以创建一个Date 对象,然后输出您要显示的信息。这是我制作的一个快速 sn-p,它显示了几个作用于 Date 对象以输出不同值(例如日期、时间和年份)的方法:

    <!DOCTYPE html>
    <html>
    <body>
    
    <h3>The toDateString() method converts a date to a date string:</h3>
    <p id="demo1"></p>
    
    <h3>The toLocaleTimeString() method outputs formatted time:</h3>
    <p id="demo2"></p>
    
    <h3>The getFullYear() method outputs the year:</h3>
    <p id="demo3"></p>
    
    <script>
    // create date object
    var d = new Date();
    
    // use toDateString() to output formatted date
    document.getElementById("demo1").innerHTML = d.toDateString();
    
    // use toLocaleTimeString() to output formatted time
    document.getElementById("demo2").innerHTML = d.toLocaleTimeString();
    
    // use getFullYear() to output year
    document.getElementById("demo3").innerHTML = d.getFullYear();
    </script>
    
    </body>
    </html>

    W3schools 对 Date object 以及如何使用 format output 有很好的说明,如果您需要更多示例和使用参考。

    如果您需要了解如何在 Jekyll 中使用 Javascript,Jekyll Talk 上有一篇有用的帖子会有所帮助。

    【讨论】:

      【解决方案2】:

      首先,您不必插入“布局、标题、日期等”。您可以为他们使用Front Matter defaults。这仅对布局有意义,因为标题可以或应该是默认值,日期也不是。

      必须在您的文件名中设置日期,并且可以在 Front Matter 中覆盖该日期。请注意,这仅适用于内置集合posts。如果您使用自定义集合,则根本不需要日期。

      但是,如果您仍然选择使用 posts 并且想要自动添加日期,那么只有一个真正的选择:使用自动输入此输入的 CMS,例如 Forestry.io 或 CloudCannon。

      【讨论】:

      • AFAIK 您可以免费提交回 repo(在 CloudCannon 的情况下可以托管在其他地方)。
      猜你喜欢
      • 2016-12-26
      • 2021-02-06
      • 2015-01-09
      • 2017-10-11
      • 1970-01-01
      • 2018-11-28
      • 2019-09-10
      • 2019-11-03
      • 1970-01-01
      相关资源
      最近更新 更多