首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带动态部件的静态站点生成器

带动态部件的静态站点生成器
EN

Stack Overflow用户
提问于 2013-08-01 15:01:23
回答 2查看 1.3K关注 0票数 3

我在找一个好的静态站点生成器。我正在研究杰基尔 / 章鱼 (Ruby),或者弗罗津PieCrust (PHP)。我只有一件事阻碍我:

如何创建边栏小部件,在构建/编译时从JSON文件中读取数据并根据数据生成静态页面?一个特殊的用例是,当我有一个事件的JSON文件时,我想在静态页面上将它们显示为侧边栏上的一周事件列表。

我知道我可以简单地使用客户端Javascript来加载和处理JSON文件,然后操作DOM,但我确信这不是一个好主意。

目前,我正在使用PyroCMS,并将这些自定义代码作为模板的一部分。(不太理想,我知道。因为我计划从PyroCMS迁移到别处,所以我并没有去修复它。)

我更喜欢使用Jekyll (真正的函数)、Phrozn或PieCrust (因为我可以重用我以前的PHP代码),但是我不知道如何创建一个半动态的页面,就像我上面描述的那样。我也对其他静态站点生成器开放--只要它们使用PHP、Ruby或Python。

提前谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-02 16:04:14

您可以编写Jekyll插件来完成这个任务,可能是一个标签。如果将JSON放在一个名为_data的目录中,标签插件的框架如下所示:

代码语言:javascript
复制
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)

然后,您可以将布局中的标记调用为

代码语言:javascript
复制
{% sidebar_events %}

当站点构建时,它将被格式化的JSON列表所取代。

票数 2
EN

Stack Overflow用户

发布于 2013-08-01 15:06:47

经过更多的研究,我发现弗罗津似乎能够做到这一点。

http://www.phrozn.info/en/documentation/providers/

不过,我希望从杰基尔的角度听到更多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17997629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档