在Jekyll中更好地处理巨型格式化数据对象的方法?

时间:2014-10-08 17:50:37

标签: ruby jekyll

我将现有博客Code Insider转换为Jekyll。目前它是一个简单的静态站点,由flask + frozenflask支持,带有一些自定义功能,而Jekyll似乎有一个很好的社区围绕它,所以我想我也可以开始使用它而不是我现有的半janky自定义设置。

令人感兴趣的是,博客内容非常重要,而且结构严谨。每个帖子中都有三个对话(codeinsider.us/i/5.html),他们有一个名称,描述,img头像和一组附加的QAs。这也是问题本身的元数据(名称,介绍,时间戳等)

基本上我现在正在做的是将每个问题 - 答案字符串分配给一个元组,将其推入列表,将列表分配给一个Conversation dict,将每个Conversation推送到一个列表中。对话列表以及元数据是我博客的全部内容。

将此转换为Jekyll有点有趣。 Jekyll在其前面的内容或页面内容对象中没有很好的动态。

我基本上选择了" hack"利用杰基尔的前沿事项 - 在每个与对话相对应的杰基尔邮报中,我创建了一个词典列表

name: "Interview with Vincent"
intro: "Hello this is the intro"
title: "CoderPad interview"
conversations:
    -name: "Vincent"
    qas: 
        -question: "First question"
         answer: "First answer"
    -name: "John"
    qas: 
        -question: "Second question"
         answer: "Second answer"
        -question: "Third question"
         answer: "Third answer"

等。在杰基尔有更好的方法吗?请注意,这些问题/答案可能非常很长。

这是我尝试实现的父模板中的核心循环,并传递了数据。那个conversations对象目前是大YAML blob中的对象。

{% for conversation in conversations %}
    <img src="{{ conversation.headshot_img }}"/>
    {% for qas in conversation.qas %}
        {{ qas.question }}
        {{ qas.answer }}
    {% endfor %} 
{% endfor %}

1 个答案:

答案 0 :(得分:0)

这似乎是优化帖子撰写的好方法。

---
interview metadatas ...
---
{% include interview.html %}

_includes / interview.html

---
metadatas ...
---
<h2>{{ page.name }}</h2>
....
{% for conversation in page.conversations %}
{{ conversation.name }}
    {% for qas in conversation.qas %}
        {{ qas.question }}
        {{ qas.answer }}
    {% endfor %}
{% endfor %}

如果您想在面试metadatas中使用markdown,可以输出:

{{ page.introduction | markdownify }}