带动态元件的静态现场发生器

2024-10-02 06:21:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我在找一个好的静态站点生成器。我正在研究Jekyll/Octopress(Ruby)或Phrozn或{a4}(PHP)。我只有一件事阻止了我:

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

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

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

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

提前感谢您的帮助。在


Tags: 文件代码json站点静态事件页面a4
2条回答

经过更多的研究,我发现Phrozn似乎能做到这一点。在

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

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

你可以写一个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)

然后可以在布局中将标记称为

^{pr2}$

当网站建成后,它将被你的格式化自JSON列表所取代。在

相关问题 更多 >

    热门问题