2014-05-08 3 views
2

Итак, у меня есть файл, authors.yml, внутри моей папки Jekyll _data. Он настроен таким образом:Показать данные из файла Jekyll _data

short_name: 
    name: First Lastname 
    email: [email protected] 
    twitter: twitterID 
    image: image.jpg 
    bio: 'Bio goes here.' 

Я хотел бы сделать страницу с перечислением каждого автора в этом файле. Это то, что я пробовал:

<ul> 
{% for author in site.data.authors %} 
    <li>{{ author.name }}</li> 
{% endfor %} 
</ul> 

Что это возвращает это число пустых список тегов, соответствует числу авторов в файле.

Я задаюсь вопросом, есть ли способ, чтобы отобразить данные, содержащиеся в каждом авторе, не прибегая к следующему в файле YAML (как это нарушает другой код на сайте):

-author: short_name 
    name: First Lastname 
    email: [email protected] 
    twitter: twitterID 
    image: image.jpg 
    bio: 'Bio goes here.' 

Возможно ли это ?

В качестве альтернативы, код, который сломан, когда я добавляю ключ «автор», является следующим.

В шаблоне:

{% assign author = site.data.authors[post.author] %} 

И в плагине:

entry_name = site.data['authors'][entry.author] 

ответ

1

Я не уверен, если это то, что вы после этого, но я пытался решить подобное проблема.

{% for member in site.data.authors %} 
    {% if member.short_name == post.author %} 
     {% assign author = member %} 
    {% endif %} 
{% endfor %} 

Для этого, чтобы работать, мне нужно, чтобы включить short_name пункт в моих данных. Смотрите ниже:

- author: short_name 
    name: First Lastname 
    short_name: first_lastname 
    email: [email protected] 
    twitter: twitterID 
    image: image.jpg 
    bio: 'Bio goes here.' 

Теперь мы можем использовать {{ author.name }} и т.д. в шаблоне.

1

У меня на самом деле written a blog post на эту тему. В файле _data вам просто нужно создать новую запись для каждого набора атрибутов автора, которые вы хотите отобразить.

Итак, если вы измените файл authors.yml выглядеть следующим образом:

- name: John Doe 
    email: [email protected] 
    twitter: @johndoe 

- name: Mary Doe 
    email: [email protected] 
    twitter: @notjohndoe 

Тогда вы можете просто ссылаться на атрибут, который вы ищете на объекте автор:

{% for author in site.data.authors % 
    {% author.name %} 
    {% author.email %} 
    ... etc ... 
{% endfor %} 

Надежда что помогает.

+0

Для второй части вашего вопроса, то, что делает 'пост. автор' возврат? Имя авторов? Кроме того, какой плагин вы используете? И для чего используется переменная 'entry_name'? –

+0

https://stackoverflow.com/users/2241082/terry-s @Terry S. post.author * should * return '[{name:" John Doe ", электронная почта:" [email protected] ", твиттер : "@ johndoe"}, {name: "Mary Doe", электронная почта: "[email protected] ", твиттер:" @ notjohndoe "}]' – DavChana

0

У меня был такой же вопрос. Вот лучшее решение.

Это отрывок из моего файла макета:

--- 
layout: sidebar-container 
author: paul 
includeHeader: blog-image.html 
--- 

{% assign author = site.data.people.[page.author] %} 


<article class="container"> 
    <header> 
     <h1 class="title">{{ page.title }}</h1> 
     {% if page.subtitle %}<h2 class="subtitle">{{ page.subtitle }}</h2>{% endif %} 
     <div class="meta"> 
      By <address><a rel="author" href="{{ author.link }}" title="{{ author.name }}" target="_blank">{{ author.name }}</a></address> &mdash; 
      <time pubdate datetime="{{ page.date | date: "%Y-%d-%B" }}" title="{{ page.date | date: "%B %d, %Y" }}">{{ page.date | date: "%B %d, %Y" }}</time> 
     </div> 
    </header> 

Вот мой файл данных с именем «» people.yml

dave: 
    id: dave 
    name: David Smiths 
    link: /bitcoin-expert/ 
    twitter: DavidSilvaSmith 
    image: http://www.gravatar.com/avatar/7bbd083ea04a3c791e878da24c08b987.png 
    bio: David is the CEO of bitcoin bulls. 

paul: 
    id: paul 
    name: Paul 
    link: http://www.paulsmith.com 
    twitter: PaulSmith 
    image: http://www.cs.mcgill.ca/~kry/kry-acm1.png 
    bio: Paul Smith rocks 
Смежные вопросы