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

Add a project page to site.posts on a Jekyll blog

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

  <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>

这看起来不错,但是当我再做一个 post 时,它会在一两周后坏掉。有没有办法创建另一个 "post" 并将其以保持排序的方式插入到 site.posts 的列表中?还有其他我不知道的更好的方法吗?

如果我对你的问题理解正确,你希望在你的 post 列表中有一些 "special project posts" 只是 link 到另一个特定项目站点但有一个日期因此可以与其他 post 一起排序。

这是我想出的:

您在 _posts/ 中创建了一个空的 Post,前言如下:

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

customlink 属性用于 link 到您的项目页面。在您的 html 中,您列出所有 post 的地方,您创建一个 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>

您的项目 post 被视为您的其他 post 并按日期与它们一起排序,但其 link 会将用户引导至您的项目页面。

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

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