Используйте «link» и «post_url» с переменными - PullRequest
0 голосов
/ 19 мая 2019

Я бы хотел манипулировать тэгом "post_url" Liquid / Jekyll с некоторыми переменными. Вот две вещи, которые я хотел бы сделать:

Сохранить результат в переменной

Я хотел бы сохранить результат post_url в переменной, в настоящее время это не работает:

{%- assign _page_url = post_url 2019-05-19-test -%}

_page_url пуст после этой строки. (

Использовать переменную в качестве аргумента

Но главная проблема возникает, когда я пытаюсь использовать переменную в качестве аргумента. _item.post - это переменная, которая содержит строку, указывающую на правильный пост.

{%- post_url _item.post -%}

Брось исключение:

Жидкое исключение: не удалось разобрать имя сообщения "_item.post" в теге 'POST_URL. Убедитесь, что сообщение существует и правильное имя.

Jekyll :: Errors :: InvalidPostNameError: «_item.post» не содержит действительная дата и / или название. в /_layouts/page.html Ошибка: не удалось разобрать имя записи "_item.post" в теге "post_url". Убедитесь, что сообщение существует и имя верное. Jekyll :: Errors :: InvalidPostNameError: «_item.post» не содержит действительная дата и / или название. Ошибка: запустите сборку jekyll --trace для получения дополнительной информации.

1 Ответ

1 голос
/ 19 мая 2019

Поскольку post_url является тегом Liquid, вам необходимо включить его таким образом, чтобы сначала выполнялась логика этого тега, чтобы он мог сохранить результат. В этих случаях вы можете использовать {% capture %} вместо {% assign %}:

{%- capture _page_url -%}
  {% post_url 2019-05-19-test %}
{%- endcapture -%}

Что касается использования переменных в качестве аргумента post_url, в настоящее время это невозможно с этим тегом. Глядя на код тега , он буквально берет все после post_url в теге и пытается проанализировать его, используя свою определенную структуру для сообщений, тогда как что-то вроде include тега имеет фактический шаг, чтобы обнаружить переменные и определить их значение. Тем не менее, похоже, что это будет возможно в Jekyll 4.0 ( см. Этот PR ). Вы можете получить такое поведение сейчас, используя пре-альфа-версию , хотя она нестабильна, поэтому вы можете увидеть неожиданное поведение в другом месте.

...