访问布局中的博客配置变量

Access blog config variables in layouts

原来下面的描述并不能很好地描述我所需要的。通过所有这些研究,我已经弄清楚如何问我 应该 一直在问的问题。新 post:。留下这个问题以防其他人受益。


我正在构建一个激活了多个 "blogs" 的站点,在某些情况下,能够从 config.rb 获取 blog.prefix 之类的东西会很有用。我知道您可以 set 变量并通过 config.rb 使用实例变量,但这意味着在模板中我必须知道我在哪个博客中并不能解决我的问题。 (我想要所有博客的布局,而不是每个博客的布局。)

有没有一种方法可以从 config.rb 获取 blog.prefix 和其他激活变量,并在如下布局中使用它:

<p>The blog prefix is: <%= blog.prefix %></p>

更新

我试过在 page do 块中传递实例变量,以及使用 locals => { :variable = value } 并且在呈现页面时两者都会导致 Error: cannot find _auto_layout

我最初 post 在 the middleman forums 上编辑了这个,但 Whosebug 倾向于关注它。 :-D

更新 2

如果我必须为每个单独的变量(比如 blog1_prefixblog2_prefixblog3_prefix),那么我必须知道我从模板调用哪个变量.我需要模板来知道它为哪个博客获取前缀(或其他)。

在我的 config.rb 中,我有一个看起来像这样的块:

my_blogs = ["blog1", "blog2", "blog3"]

my_blogs.each do |my_blog|
  activate :blog do |blog|
    blog.prefix = my_blog
  end
end

有没有一种方法可以设置一个变量,让布局知道正在调用哪个博客,这样我就可以像上面的示例那样做一些事情:

<p>The blog prefix is: <%= blog.prefix %></p>

这将从单个布局呈现在三个博客中的每一个上:

<p>The blog prefix is: blog1</p>

<p>The blog prefix is: blog2</p>

<p>The blog prefix is: blog3</p>

如果你使用多个博客,中间人申请的"blog" 属性是一个数组,你应该使用博客名称来指定你想要获取哪个博客。

更新:

因此,如果您激活博客:

my_blogs = ["blog1", "blog2", "blog3"]

my_blogs.each do |my_blog|
   activate :blog do |blog|
     blog.name = my_blog
     blog.prefix = my_blog
   end
end

您可以通过

评估特定博客
blog("blog1")

如果您使用博客模板,您可以在 frontmatter 中指定博客名称:

---
pageable: true
per_page: 5
blog: blog1
---

并在模板中使用 "blog" 变量(在此上下文中为 "blog('blog1')"),例如获取标签(如果您设置标签页面模板):

<% blog.tags.each do |tag, articles| %>

在这种情况下,将为 "blog1" 博客

获取文章

更新 2 - 终于解决了

为了访问博客选项(博客配置变量),例如你需要的前缀

blog("blog1").options.prefix

与其他选项相同。