我在找一个好的静态站点生成器。我正在研究杰基尔 / 章鱼 (Ruby),或者弗罗津或PieCrust (PHP)。我只有一件事阻碍我:
如何创建边栏小部件,在构建/编译时从JSON文件中读取数据并根据数据生成静态页面?一个特殊的用例是,当我有一个事件的JSON文件时,我想在静态页面上将它们显示为侧边栏上的一周事件列表。
我知道我可以简单地使用客户端Javascript来加载和处理JSON文件,然后操作DOM,但我确信这不是一个好主意。
目前,我正在使用PyroCMS,并将这些自定义代码作为模板的一部分。(不太理想,我知道。因为我计划从PyroCMS迁移到别处,所以我并没有去修复它。)
我更喜欢使用Jekyll (真正的函数)、Phrozn或PieCrust (因为我可以重用我以前的PHP代码),但是我不知道如何创建一个半动态的页面,就像我上面描述的那样。我也对其他静态站点生成器开放--只要它们使用PHP、Ruby或Python。
提前谢谢你的帮助。
发布于 2013-08-02 16:04:14
您可以编写Jekyll插件来完成这个任务,可能是一个标签。如果将JSON放在一个名为_data的目录中,标签插件的框架如下所示:
module Jekyll
class JsonEventsTag < Liquid::Tag
def initialize(tag_name, markup, tokens)
super
# Open & Parse JSON file somthing like
@events = JSON.parse(File.read("_data/events.json"));
end
def render(context)
# loop over @events, format into HTML and return the result
end
end
end
end
Liquid::Template.register_tag('sidebar_events', Jekyll::JsonEventsTag)然后,您可以将布局中的标记调用为
{% sidebar_events %}当站点构建时,它将被格式化的JSON列表所取代。
发布于 2013-08-01 15:06:47
经过更多的研究,我发现弗罗津似乎能够做到这一点。
http://www.phrozn.info/en/documentation/providers/
不过,我希望从杰基尔的角度听到更多。
https://stackoverflow.com/questions/17997629
复制相似问题