gpt4 book ai didi

ruby - 如何使用不同的布局呈现所有 Jekyll 页面?

转载 作者:数据小太阳 更新时间:2023-10-29 09:00:43 25 4
gpt4 key购买 nike

我正在尝试创建一个 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

此代码无效。

最佳答案

在下面的代码中,我使用 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

关于ruby - 如何使用不同的布局呈现所有 Jekyll 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36229446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com