【问题标题】:Generating files by programming in Jekyll在 Jekyll 中通过编程生成文件
【发布时间】:2016-05-13 10:07:38
【问题描述】:

假设我在_data 文件夹中有一些数据,我想从中自动生成页面。那就是:想象_data/structure.md是这样的

chapters:
  -
    chapter1  
    chapter2 
    chapter3 
    ...

我需要静态文件chapter1.mdchapter2.md ...等等,它们的结构非常相似(例如,chapter1.md

---
title:chapter1
layout: default
---

This is chapter1!!

)。 有没有办法自动创建这些文件,而无需手动操作,只需更改或添加 _data 文件中的项目?

【问题讨论】:

  • 所有文件的内容(如“这是第 1 章!!”)是否需要不同?
  • @DavidJacquel 不同但仅取决于参数chapter1,也就是说,不需要比_data 包含的更多信息

标签: ruby jekyll liquid


【解决方案1】:

您可以使用生成器 (documentation)。 这可能是这样的:

module Jekyll

  class DataPage < Page
    def initialize(site, base, dir, name)
      @site = site
      @base = base
      @dir = dir
      @name = name
      self.process(@name)
      self.data ||= {}
      self.data['layout'] = 'default'
      self.data['title'] = data
    end
  end

  class CategoryPageGenerator < Generator
    def generate(site)
      datas = site.data['structure']
      datas.each do |data|
        name = "#{data}.md"
        page = Jekyll::DataPage.new(site, site.source, @dir, name)
        page.data['title'] = data
        page.data['layout'] = 'default'
        page.content = "This is #{data}"
        site.pages << page
      end
    end
  end

end

【讨论】:

  • 工作正常!!做同样的事情,但将生成的文件保存在特定文件夹中呢? (即_site/chapters 而不是_site)我想需要一些额外的代码
  • initialize : @dir = 'chapters'
猜你喜欢
  • 1970-01-01
  • 2013-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-19
  • 2014-06-26
  • 2012-08-24
  • 1970-01-01
相关资源
最近更新 更多