在Jekyll博客上将项目页面添加到site.posts

时间:2015-07-09 23:31:43

标签: jekyll liquid

我有一个Jekyll blog,其中主页是一堆帖子的链接,但我还想要包含项目的gh页面页面的链接,我希望列表按日期排序。现在,我只是手动将其插入页面顶部。

  <ul class="posts">
    <li>
      <span class="post-date">Jul 8, 2015</span>
      <a class="post-link" href="/QuisCustodiet/">The Most Influential Works, According to TvTropes</a>
    </li>
    {% for post in site.posts %}
      <li>
        <span class="post-date">{{ post.date | date: "%b %-d, %Y" }}</span>
        <a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a>
      </li>
    {% endfor %}
  </ul>

这看起来还不错,但是当我再发一篇文章时,它会在一两周后中断。有没有办法创建另一个“帖子”并将其以一种保持排序的方式插入到site.posts列表中?还有一些其他更好的做法,我不知道吗?

1 个答案:

答案 0 :(得分:1)

如果我理解您的问题,您希望在您的帖子列表中有一些“特殊项目帖子”,这些帖子只是指向另一个特定项目站点的链接,但是有一个日期,因此可以与其他帖子一起排序。 / p>

以下是我提出的建议:

你在_posts /中创建一个空帖子,前面的内容如下:

---
layout: post
title: "Project Example"
customlink: http://www.example.org
date:   2015-07-12 12:50:25
---

customlink属性用于指向项目页面的链接。在您的html中,列出您的所有帖子,您创建一个if语句来检查属性并正确处理它。像这样举例如:

<ul>
  {% for post in site.posts %}
    <li>
      {% if post.customlink %}
        <a href="{{ post.customlink }}">{{ post.title }}</a>
      {% else %}
        <a href="{{ post.url }}">{{ post.title }}</a>
      {% endif %}
    </li>
  {% endfor %}
</ul>

您的项目帖子被视为您的其他帖子,并按日期排序,但其链接会将用户引导至您的项目页面。

Jekyll仍会为此帖创建html,并像特定路径下的所有其他帖子一样提供服务。为了防止出现这种情况,您可以在帖子前面添加一个空的permalink属性,例如permalink: "",您的帖子将位于您博客的根目录下。 Jekyll仍然会在_site文件夹中为此帖子创建一个“.html”文件。

您需要手动为每个外部项目创建帖子,但我不知道更好的解决方案。