【问题标题】:Better way of doing giant formatted data objects in Jekyll?在 Jekyll 中做巨型格式化数据对象的更好方法?
【发布时间】:2014-10-08 17:50:37
【问题描述】:

我正在将我现有的博客Code Insider 转换为 Jekyll。目前它是一个简单的静态站点,由 flask + freezeflask 支持,具有一些自定义功能,并且 Jekyll 似乎有一个很好的社区,所以我想我不妨开始使用它,而不是我现有的半垃圾自定义设置。

有趣的是,博客内容不平凡且高度结构化。每篇文章(codeinsider.us/i/5.html)中都有三个“对话”,它们有一个名称、描述、img 头像和一组附加的 QA。还有关于问题本身的元数据(名称、介绍、时间戳、等)

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

将其转换为 Jekyll 有点有趣。 Jekyll 在其前端内容或页面内容对象方面做得不好。

我基本上已经确定了一个利用 Jekyll 前线的“黑客”——在每个与对话对应的 Jekyll 帖子中,我正在创建一个字典列表

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"

等等。在 Jekyll 中有更好的方法吗?请记住,这些问题/答案可能非常长。

这是我正在尝试实现的父模板中的核心循环,并将数据传递给。 conversations 对象当前是大 YAML blob 中的内容。

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

【问题讨论】:

  • 上次我做类似(疯狂?)的事情 (github.com/D-side/geekparty4) 我在 GitHub 的 YAML 可视化工具中发现了一个错误,他们已经修复了它。我想这不是 Jekyll 的目的,它旨在简单。他们最近添加了支持 JSON 的 _data 文件(使用 Jekyll 2),这可能会有所帮助。

标签: ruby jekyll


【解决方案1】:

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

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

如果你想在你的面试元数据中使用 markdown,你可以输出它:

{{ page.introduction | markdownify }}

【讨论】:

  • 感谢大卫的回答。不幸的是,我觉得它对核心重复没有帮助,因为我需要一种方法来实现这个核心循环(参见更新)
猜你喜欢
  • 1970-01-01
  • 2019-09-09
  • 2013-01-24
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多