Я бы хотел, чтобы мой внешний файл Liquid template ссылался на файл JavaScript только тогда, когда это требует его страница. Я создал переменную страницы, page.slideshow
, которая контролирует это:Переопределение переменных передних переменных YAML из Liquid
default.html:
{% if page.slideshow %}
<script type="text/javascript" src="/js/slideshow.js"></script>
{% endif %}
Теперь у меня есть шаблон, который «наследует» от default.html, что позволяет страницу, чтобы указать в YAML frontmatter - список изображений (page.images
). Только когда этот список содержит более одного элемента, я хочу, чтобы slideshow.js был включен в страницу.
Моя попытка это выглядит что-то вроде:
other.html
---
layout: default
---
{% assign imagecount = page.images | size %}
{% if imagecount > 1 %}
{% assign page.slideshow = true %}
{% endif %}
Однако, это, кажется, не влияет на оказание default.html, поскольку тег сценария не входит в окончательная страница.
В качестве обходного пути я могу изменить фронтмастер каждой страницы, в которой перечислены несколько изображений, для явного набора slideshow: Yes
или изменить default.html, чтобы проверить page.slideshow or (page.images | size) > 0
, но я предпочел бы структурировать его ближе к тому, что я попытался сделать выше.
было ли это разрешено на вашем конце? –