Вопрос по – Пользовательские переменные в Jekyll Front Matter

12

Новичок в Jekyll и интересующийся, возможно ли включить пользовательские переменные в Jekyll Front Matter. Это было бы полезно для вложенных макетов, например что-то вроде:

макеты / artist.html

<code>----
layout: default
title: {{ page.artist }} (Artist)
----
</code>

Я получаю ошибку, пытаясь это сделать.

YAML (то, что является основным вопросом, Liquid не выполняет замены там, я думаю, что) поддерживаетreferences но я не смог заставить их работать в макете (хотя они работают локально на странице). huon
У меня был похожий вопрос, где мне нужны переменные нумерации страниц в заголовке. Решение было дано здесь:stackoverflow.com/a/29729309/599477 cornernote

Ваш Ответ

2   ответа
2

есть ли способ сделать это должным образом (то есть на стороне сервера), но мерой ограничения может быть наличие небольшого фрагмента Javascript, который устанавливает правильный заголовок в браузере пользователей. например

---
title: Default title blah blah
---

[... content ...]

<span id="pagetitle" style="display: none">{{ page.artist | escape }} (Artist)</span>

<script type="text/javascript">
    var pagetitle = document.getElementById("pagetitle");
    if (pagetitle) {
        document.title = pagetitle.textContent;
    }
</script>
Notes:

Заменаpage.artist выполняется в HTML, а не в Javascript, потому что легче цитировать любые специальные символы HTML (черезescape), а не специальные символы Javascript' или же" или же\ (для этого нет встроенного фильтра).

Можно также переместитьpagetitle переместиться в верхнюю часть страницы, чтобы она была рядом с остальными материалами YAML.

К сожалению, это очень плохой способ достижения этого, но, похоже, это единственный способ, кроме написания плагина.

Error: User Rate Limit Exceededofficially supportedError: User Rate Limit Exceeded
2

и единственный способ сделать это - через плагин, такой какДжекил-conrefifier.

Кроме того, что вы можете сделать, это создать переменные, которые вы используете повторноon the same file:

{% assign new_title = page.title | append: " (Artist)" %}
<h1>{{ new_title }}</h1>

и вы также можете передавать переменные в файлы, которые включаются. Например, включая файл из_includes\display-post.html передача измененного заголовка в качестве аргумента:

{% assign new_title = page.title | append: " (Artist)" %}
{% include display-post.html post_title=new_title %}

И затем получить значение переданного значения (пример содержимого_includes\display-post.html):

{% assign title_received = include.post_title %}

<h1>Title that as passed in: {{ title_received }}</h1>

Похожие вопросы