13

ミドルマンで簡単なポートフォリオサイトをまとめています。ローカルの YAML データに基づいて「作業」ページを動的に生成しています。これはconfig.rbにあります:

data.work.projects.each do |project|
  page "/work/#{project[0]}.html", :proxy => "project_template.html" do
    @project = project
  end
end

SEO の目的で、これらの動的に生成されたページのそれぞれに、固有のページ タイトルと説明を付けたいと考えています。

タイトルは現在このようにレイアウトファイルに設定されています

  %title
    = current_page.data.title

そして、frontmatter を使用して current_page 変数を次のように設定できることを知っています

---
title: "Recent Work - "
---

それを project_template.haml に貼り付けることができますが、このようなものを機能させる方法はありますか?

---
title: "Recent Work - " + @project.title
---
4

3 に答える 3

24

(あなたがやっているように)フロントマターでタイトルを設定する代わりに、content_for を使うことができます。

レイアウトの例:

%title= yield_content(:title)

そして、動的ページのテンプレートでは:

- content_for(:title, @project.title)

于 2012-10-01T23:38:23.753 に答える
9

これが最も単純なモジュラー ソリューションです。

レイアウトで、次を挿入します。

%title= 'Your Site Title | ' + @title

@title は、現在のページで使用できる ruby​​ インスタンス変数です。

現在のページで、次のように入力します (ダッシュを忘れないでください)。

- @title = 'Your Page Title'

その後、あなたは行く準備ができているはずです!

于 2014-03-06T16:06:07.657 に答える
3

その制限を回避する別の方法を見つけました。ページ データを取得する代わりに、メタデータから frontmatter データを取得します。

%title = current_page.metadata[:page]['title']

current_page.data を介してデータを取得するほど短くはありませんが、メタデータを変更することしかできませんでした。

proxy newpath, oldpath, :page => { 'title' => newtitle }

理由はわかりませんが、記憶が正しければ、後でメタデータ リソースも準備完了に設定する必要がありました。

resource.add_metadata :page => { 'title' => newtitle }

私はまだ、より良い解決策があるに違いないと考えています/願っています。プロキシ ページに frontmatter データを設定できないのは、まったく奇妙なことです。

于 2014-01-14T15:18:24.770 に答える