我正在使用 Middleman 静态页面生成器,我想根据 frontmatter 中的选择从数据文件中提取信息。
例子
我的数据文件位于data/cta.yaml
不同的号召性用语文本变体中,可以在各个页面上重复,这意味着每个 CTA 文本可以在多个页面上使用。
data/cta.yaml
:
basic: This is default CTA
special: Something special here
other: Some other CTA
然后我有layout.erb
:
<body>
<%= yield %>
<p class="cta">No data yet</p>
</body>
并且test.html.erb
:
---
title: Some page for testing
cta: It works with layout if I do not reference 'data/cta.yaml'
---
Some page content.
如果我想使用第一个 CTA 文本,我可以<p class="cta"><%= data.cta.basic %></p>
在layout.erb
布局文件中使用或将其从布局中删除并将其直接移动到test.html.erb
模板文件的末尾。或者,我可以完全删除数据文件,只需在 frontmatter 中为每个页面键入 CTA 文本。但是,我更愿意将 CTA 文本保留在数据文件中,并将所有 HTML 保留在layout.erb
其中,然后能够从frontmattercta.yaml
中“选择”信息。test.html.erb
我试图改变
<p class="cta"><%= data.cta.basic %></p>
在layout.erb
到
<p class="cta"><%= current_page.data.cta %></p>
然后在test.html.erb
前面:
---
title: Some page for testing
cta: data.cta.basic
---
但这导致数据文件中的逐字data.cta.basic
文本而不是“这是默认 CTA” 。cta.yaml
问题
是否可以使用 frontmatter 来选择数据文件中的哪些文本应该用于给定页面?