Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I have multiple authors for one post in Jekyll?

Tags:

jekyll

I have the following header on a jekyll post with a single author "usman" which generates the this article. I would like to have something like "authors: usman, someone_else" so a colleague can also contribute to the article. Is this possible? How would I set it up.

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

---

I took a look at the post template for the theme I am using and it has the following line:

{% assign author = site.authors[page.author] %}

This will obviously only support one author, Is there a way to get both authors of the page? i.e. page.author[0] for example?

like image 843
Usman Ismail Avatar asked Mar 03 '13 18:03

Usman Ismail


1 Answers

If you want to specify multiple authors in your YAML Frontmatter, then you are going to want to use YAML's list syntax like you did with categories and tags, like this:

author:
- usman
- someone_else

This will be useful for dynamically injecting author information into each of the posts.

As for allowing multiple people to contribute to the same article, I don't think this has anything to do with Jekyll or what is specified in the Frontmatter. This is an issue of having your Jekyll content hosted in a shared place (such as on GitHub, like many do) where both you and your collaborator can both work on the file. That being said, be aware that you may run into nasty merge conflicts if you work on that same markdown file in parallel.

Update

This is an update based on the OP's edits to the original question.

A simple hacked approach would be to set your author tag like this:

author: Usman and Someone_Else

This doesn't give you much flexibility though. A better solution, which would require you to modify the template you are using, would be to do something like the following:

First, setup your YAML Front Matter so that it can support multiple authors.

authors:
- Usman
- Someone_else

Now, you modify the template to go through the authors specified in the 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>

Resulting HTML:

If no authors are specified:

<p>No author</p>

If one author is specified:

<p>Usman</p>

If two authors are specified:

<p>Usman and Someone_Else</p>

If more than two authors are specified:

<p>Usman, Bob, and Someone_Else</p>
like image 143
jbranchaud Avatar answered Nov 09 '22 14:11

jbranchaud