【发布时间】:2015-01-25 16:42:48
【问题描述】:
事实证明,以下内容不能很好地描述我需要什么。通过所有这些研究,我已经弄清楚了如何提出我应该一直在问的问题。新帖子:here。留下这个问题以防其他人受益。
我正在构建一个激活了多个“博客”的站点,并且在某些情况下,能够从 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。
我最初在 the middleman forums 上发布了此内容,但 Stackoverflow 往往对它有更多的关注。 :-D
更新 2
如果我必须有一个单独的变量(比如blog1_prefix、blog2_prefix 和blog3_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>
【问题讨论】:
-
你想让所有博客对象的前缀都是常量吗?
-
也许吧?对不起,我不是 100% 如果那是我所追求的。我想要的是能够获得 each 博客的
blog.prefix和其他blog设置,因此当从一个模板生成页面时,会显示正确的blog.prefix(或其他)。目前无法从布局文件中访问该设置,因此布局不知道它正在为哪个blog生成页面。 (至少,我不知道......)
标签: ruby middleman static-site