Миграция Jekyll 3.8.6 на 4.0 захваченных переменных из импорта больше не расширяется - PullRequest
0 голосов
/ 25 марта 2020

У меня есть сайт Jekyll со статьями о продуктах. В верхней части каждого post.md я включаю файл с {%- include vars -%}. vars является включаемым файлом, который содержит {%- include varfiles/product.html id=page.product -%}. Он автоматически захватывает номер продукта на странице, а затем передает его product.html в папке varfiles. Ниже приведен product.html

{%- assign product = site.data.products | where:"id",include.id | first -%}

<!-- product name -->
{%- if product.name -%}
  {%- capture product-name -%}
    {{ product.name }}
  {%- endcapture -%}
{%- endif -%}


plus a lot more similar to the code above

Файл, по сути, представляет собой множество типов создателей имен переменных, основанных на свойствах продукта, извлеченных из файла данных продуктов, который представляет собой список продуктов. В результате, когда я добавляю {%- include vars -%} вверху любого post.md, он автоматически генерирует более легкие для запоминания / использования имена переменных на основе номера идентификатора продукта во frontmatter. Затем я могу включить имена переменных в статью, например {{ product-name }}, и она автоматически разрешает переменные, созданные из vars include.

ПРОБЛЕМА: Когда я обновляю jekyll, чтобы использовать все 4,0 переменные пусты. Если поместить {{ product-name }} где-то в post.md в поле vars include, оно автоматически преобразуется в название продукта. На 4.0 становится пустым. Единственное изменение, которое я делаю, - это обновление до Jekyll 4.0. Если я понижаю все переменные, они работают нормально.

1 Ответ

0 голосов
/ 25 марта 2020

Обходной путь, который, кажется, работает, должен изменить

{%- assign product = site.data.products | where:"id",include.id | first -%}

на

{%- assign product = site.data.products[include.id] -%}

без понятия, почему это работает.

...