Динамические переменные Jekyll Liquid

Я хотел бы использовать динамические переменные для моей установки jekyll + liquid. Я хочу получить динамический доступ к файлу _config.yml, используя динамическую переменную имена.

Лучше всего это объяснить на примере:

Page:

---
layout: default
title: title_homepage
---

Default Layout:

{{ site.locales[site.default_locale].page.title }}

_config.yml:

default_locale: "en"

locales:
  en:
    title_homepage: "This is my homepage title!"
  pirate:
    title_homepage: "Yaaawwwr. Homepage title."

Итак, как я могу получить доступ к _config.yml с именем динамической переменной?

 Hendrik22 мая 2012 г., 16:49
Привет Алан, да. это правильно. Затем я сгенерирую один _сайт для en, другой для _pirate
 Alan W. Smith22 мая 2012 г., 03:42
Чтобы убедиться, что мне ясно. Вы 're' '_config.yml' Файл всегда будет называться именно так. Для внесения изменений вы обновите «default_locale». переменная внутри "_config.yml" от "en" на "пиратский". В этот момент, когда вы запускаете jekyll, вы хотите, чтобы вывод в макете по умолчанию показывал & quot; Yaaawwwr. Заголовок главной страницы. & Quot; вместо & quot; Это заголовок моей домашней страницы! & quot ;. Это точно?

Ответы на вопрос(2)

Решение Вопроса

который вы хотите получить, находится в конфигурации сайта. Не сама страница. Все, что вам нужно сделать, это изменить вызов в вашем списке расположения по умолчанию на это:

{{ site.locales[site.default_locale].title_homepage }}

Когда вы установитеdefault_locale: "en" вывод будет "Это заголовок моей домашней страницы!" Когда вы обновляете файл _config.yml доdefault_locale: "pirate"вывод будет "Yaaawwwr. главной страницы. & Quot; Я проверил это на Jekyll 0.11.2, и оно работает, как и ожидалось.

 Hendrik23 мая 2012 г., 13:51
спасибо за идею но это все равно оставило бы меня с проблемой, что я должен определить несколько макетов для нескольких страниц. Я хотел бы определить заголовок страницы внутри страницы. Вариант 1. Переведите заголовок страницы в текстовую часть YAML или вариант 2. Динамически переведите его в макет по умолчанию.
 Hendrik26 мая 2012 г., 19:42
Пожалуйста, смотрите здесь:stackoverflow.com/questions/10750755/…
 23 мая 2012 г., 17:28
Ах. Я думал, что вы ищете глобальный заголовок, который был определен в файле _config.yml. Я думаю, что этот вопрос все еще полезен. Я предлагаю оставить этот вопрос как есть и создать новый вопрос, в котором основное внимание уделяется использованию параметра в _config.yml для изменения заголовков, которые определяются индивидуально на каждой странице / записи.

он не может использовать переменную. Но я думаю, что для локали, есть одно простое решение.

Следуйте этой файловой структуре (или что-то в этом роде):

root
  - _include
    home.html
  - _layout
    default.html
  - en
    index.html
  - pirate
    index.html
  index.html

Это просто, теперь используйте include для {{content}} и создавайте простые файлы с переменными и одной строкой {% include index.html%}

_include/index.html :

<h1>{{page.title}}</h1>

en/index.html :

---
layout: default
title: "This is my homepage title!"
---
{% include home.html %}

pirate/index.html :

---
layout: default
title: "Yaaawwwr. Homepage title."
---
{% include home.html %}

Итак ... вот и все.

Теперь создайте переменную страницы для обработки URL локали для каждой страницы ....

Я надеюсь, что это поможет.

Ваш ответ на вопрос