включить тег в макет по умолчанию, не действует в другом макете, используя макет по умолчанию - PullRequest
0 голосов
/ 27 декабря 2018

Предисловие:

У меня есть сайт Jekyll, который использует collections с именем collection.Он размещен на Gitlab.У меня есть файл с именем relBase.html в каталоге _includes со следующим кодом:

{% comment %}
Credits: Ketrel - https://gist.github.com/Ketrel/1f36fca6b4148f7263b3ee8fdb0923e7
{% endcomment %}

{% assign relBase = "" %}
{% assign tempDepth = page.url | split: "/" | size | minus: 1 %}
{% for i in (1..tempDepth) %}
    {% assign relBase = relBase | append: "../" %}
{% endfor %}
{% if relBase == "" %}
    {% assign relBase = "./" %}
{% endif %}

У меня есть 2 файла в каталоге _layouts: default.html и collection.html.

collection.html использует макет default.html.

Я включил relBase.html в default.html с {% include relBase.html %}.

У меня есть <link> и <script> теги в default.html, которые ссылаются на CSS и JS для сайта,

Я использовал переменную {{ relBase }} в атрибутах href и src тегов <link> и <script> соответственно, и они работают нормально.

В _config.yml Я установил:

collections:
  collection:
    output: true
    permalink: /collection/:title/

defaults:
  -
    scope:
      path: ""
      type: "collection"
    values:
      layout: "collection"

Поэтому все файлы, хранящиеся в каталоге _collection с расширением .md и имеющие frontmatter, отображаются на веб-страницах и используют макет collection.html.

Цель:

Теперь я хотел использовать {{ relBase }} в collection.html, но я не получил желаемых результатов, скорее он ведет себя так, как будто там не написано {{ relBase }}.

Если я включу relBase.html в collection.html, {{ relBase }} распознается и работает как положено.

Что я пробовал:

  1. Переименование relBase.html с relBase.liquid вместе с соответствующими изменениями в теге include в default.html.

Вопрос

Существует ли какое-то ограничение на объем включаемых файлов?Есть ли способ предотвратить двойное использование тега include?

...