如何在杰基尔的一个帖子中拥有多位作者?

Usm*_*ail 10 jekyll

我在jekyll帖子上有以下标题,其中有一位作者"usman"生成了这篇文章.我希望有类似"作者:usman,someone_else"之类的东西,所以同事也可以为这篇文章做出贡献.这可能吗?我该如何设置它.

--- 
layout: post
title: The pitfalls of building services using Google App Engine -- Part I
date: 2013-02-24 08:18:17
author: usman
categories: 
- System Admin
tags:
- GAE

---
Run Code Online (Sandbox Code Playgroud)

我看了一下我正在使用的主题的帖子模板,它有以下几行:

{% assign author = site.authors[page.author] %}
Run Code Online (Sandbox Code Playgroud)

这显然只会支持一位作者,有没有办法让这两位作者都能获得?即page.author [0]例如?

jbr*_*aud 15

如果你想在你的YAML Frontmatter中指定多个作者,那么你将要像使用类别和标签一样使用YAML的列表语法,如下所示:

author:
- usman
- someone_else
Run Code Online (Sandbox Code Playgroud)

这对于动态将作者信息注入每个帖子非常有用.

至于允许多个人为同一篇文章做贡献,我认为这与Jekyll或Frontmatter中指定的内容无关.这是将Jekyll内容托管在共享位置(例如GitHub上,就像许多人一样)的问题,您和您的协作者都可以在该文件上工作.话虽这么说,请注意,如果您并行处理同一个markdown文件,可能会遇到令人讨厌的合并冲突.

更新

这是基于OP对原始问题的编辑的更新.

一个简单的黑客攻击方法是设置你的作者标签:

author: Usman and Someone_Else
Run Code Online (Sandbox Code Playgroud)

但这并没有给你很大的灵活性.一个更好的解决方案,需要您修改您正在使用的模板,将执行以下操作:

首先,设置您的YAML Front Matter,以便它可以支持多位作者.

authors:
- Usman
- Someone_else
Run Code Online (Sandbox Code Playgroud)

现在,您修改模板以浏览YAML Front Matter中指定的作者.

<p>
{% assign authorCount = page.authors | size %}
{% if authorCount == 0 %}
    No author
{% elsif authorCount == 1 %}
    {{ page.authors | first }}
{% else %}
    {% for author in page.authors %}
        {% if forloop.first %}
            {{ author }}
        {% elsif forloop.last %}
            and {{ author }}
        {% else %}
            , {{ author }}
        {% endif %}
    {% endfor %}
{% endif %}
</p>
Run Code Online (Sandbox Code Playgroud)

产生的HTML:

如果没有指定作者:

<p>No author</p>
Run Code Online (Sandbox Code Playgroud)

如果指定了一位作者:

<p>Usman</p>
Run Code Online (Sandbox Code Playgroud)

如果指定了两位作者:

<p>Usman and Someone_Else</p>
Run Code Online (Sandbox Code Playgroud)

如果指定了两个以上的作者:

<p>Usman, Bob, and Someone_Else</p>
Run Code Online (Sandbox Code Playgroud)

  • 两个以上作者示例中"and"之前的逗号实际上不会按照现在编写的方式打印. (2认同)