Middleman 静的ページ ジェネレーターを使用しており、frontmatter での選択に基づいてデータ ファイルから情報を取得したいと考えています。
例
さまざまなページで繰り返すことができる Call-To-Action テキストのさまざまなバリアントを含むデータ ファイルが にあり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
テンプレート ファイルの最後に直接移動することができます。または、データ ファイルを完全にドロップして、各ページの前付に CTA テキストを入力するだけでもかまいません。ただし、CTA テキストをデータ ファイルに保持し、すべての HTML を保持してから、frontmatterlayout.erb
から情報を「選択」できるようにしたいと考えています。cta.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 を使用することはまったく可能ですか?