我正在寻找一个好的静态站点生成器。我正在研究Jekyll / Octopress(Ruby)或Phrozn或PieCrust(PHP)。我只有一件事能阻碍我:
如何在构建/编译时创建从JSON文件读取数据的侧栏小部件并根据数据生成静态页面?一个特定的用例是当我有一个事件的JSON文件时,我想在静态页面上将它们显示为侧栏上本周的事件列表。
我知道我可以简单地使用客户端Javascript来加载和处理该JSON文件,然后操纵DOM,但我确信这不是一个好主意。
目前,我正在使用PyroCMS,我将此自定义代码作为模板的一部分。 (不太理想,我知道。因为我打算从PyroCMS迁移出来,所以没有费心去解决它。)
我更喜欢使用Jekyll(真正的功能)或Phrozn或PieCrust(因为我可以重用我之前的PHP代码),但我看不到如何创建一个半动态页面,就像我上面描述的那样。我也对其他静态站点生成器开放 - 只要它们是PHP,Ruby或Python。
提前感谢您的帮助。
答案 0 :(得分:2)
您可以编写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列表。
答案 1 :(得分:0)