Подтвердить что ты не робот

Использование MIddleman 3.0 - Как настроить отдельные заголовки страниц на динамических страницах?

Я собираю простой портфолио в посреднике. Я генерирую "рабочие" страницы динамически на основе локальных данных 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
---
4b9b3361

Ответ 1

Вместо того, чтобы устанавливать заголовок в фронте (например, вы делаете), вы можете использовать content_for.

например. в макете:

%title= yield_content(:title)

И в шаблоне динамической страницы:

- content_for(:title, @project.title)

Ответ 2

Здесь простейшее, модульное решение.

В вашем макете введите:

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

@title - это переменная экземпляра ruby, которая будет доступна для текущей страницы.

На текущей странице введите (не забывайте тире):

- @title = 'Your Page Title'

Тогда вам должно быть хорошо идти!

Ответ 3

Я нашел другой способ обойти это ограничение. Вместо того, чтобы идти за данными страницы, получите данные о фронте из метаданных:

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

Это не так хорошо и коротко, как получение данных через current_page.data, но мне удалось изменить метаданные:

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

Я не уверен, почему, но если я правильно помню, мне пришлось также установить ресурс метаданных после этого:

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

Я все еще думаю/надеюсь, что должно быть лучшее решение. Это совершенно странно, что мы не можем установить данные фронтматера для прокси-страниц.