2016-03-25 5 views
2

私はJekyllプラグインを作成しようとしています.Jekyllプラグインは、すべての投稿を通過し、別のレイアウトで表示する必要があります。それをどうやって行うのか分かりません。それはこれまで私が持っているものです:Jekyllのページを別のレイアウトでレンダリングするにはどうすればいいですか?

module Jekyll 
    class MyGenerator < Generator 
    priority :low 
    def generate(site) 
     site.posts.docs.each do |doc| 
     page = Page.new(site, site.source, File.dirname(doc.relative_path), doc.basename) 
     page.do_layout(
      site.site_payload, 
      'post' => Layout.new(site, site.source, '_layouts/my.html') 
     ) 
     page.write(?) 
     site.pages << page 
     end 
    end 
    end 
end 

このコードは機能しません。

+0

どこがエラーですか?エラー?エラーはありませんか? –

+1

@maxpleanerああ、多くの失敗がある。単に動作しない、レンダリングしない、ファイルを保存しない。私はそれがすべて間違っていることを理解しています。ジキルの貢献者の助けが必要なのですが、私は –

+0

と思っています。個人的にはジキルと遠く離れていない。いくつかのサンプルコードのために別のJekyllプラグインを見ましたか?あるいは、Jekyllをフォークしてソースコード自体を編集しようとしましたか? –

答えて

2

以下のコードでは、すべてのページをnullレイアウトでもう一度レンダリングしています。結果ファイルの末尾に「_BARE」が付きます

module Jekyll 
    class BareHtml < Page 
    def initialize(site, base, dest_dir, src_dir, page) 

     @site = site 
     @base = base 
     @dir = dest_dir 
     @dest_dir = dest_dir 
     @dest_name = page.basename 
     file_name = "#{page.basename}_BARE.html" 
     self.process(file_name) 
     self.read_yaml(base, page.path) 
     self.data['layout'] = nil    ###  <-- set the layout name here 
    end 
    end 

    class BareHtmlGenerator < Generator 
    safe true 
    priority :low 

    def generate(site) 

     # Converter for .md > .html 
     converter = site.find_converter_instance(Jekyll::Converters::Markdown) 

     dest = site.dest 
     src = site.source 

     # Create destination path 
     FileUtils.mkpath(dest) unless File.exists?(dest) 

     site_pages = site.pages.dup 

     site_pages.each do |page| 
     bare = BareHtml.new(site, site.source, dest, src, page) 
     bare.content = converter.convert(bare.content) 
     bare.render(site.layouts, site.site_payload) 
     bare.write(site.dest) 
     site.pages << bare 
     end 

    end 

    end 

end 
関連する問題