Jekyll 将包含文件中的自定义变量视为文件名

问题描述

我有一个自定义变量,我将它传递到我的包含文件中,奇怪的是它被视为文件名。我不确定我做错了什么:

我包含我的组件:

{% include_relative includes/form/components/modal.html for="purpose" %}

includes/form/components/modal.html内容是:

<div class="modal-custom modal-custom-white" data-modal-custom="{% include.for %}" data-modal-requires-update-button>
  <div class="modal-custom-background bg-white"></div>
  <div class="modal-custom-content p-3">

    {% if include.title %}
      <h5 class="font-weight-normal text-dark mb-3">{% include.title %}</h5>
    {% else %}
      <h5 class="font-weight-normal text-dark mb-3"><strong>Tap</strong> to choose:</h5>
    {% endif %}

    <!-- Modal content here -->
    {% if include.content %}
      {% include.content %}
    {% endif %}

  </div>
  <button type="button" class="modal-custom-close is-large bg-light" onclick="toggleModal('purpose','close-retain');diposeExpandedToggler('purpose',true)"></button>
</div>

我正在运行最新版本的 Jekyll,版本 4.2.0,如果我删除 for,则一切正常。我试过了:

  • 重命名变量
  • 清理缓存
  • 以不同方式格式化变量,例如:for=purposefor="purpose"

我在另一个组件中创建了类似的东西,那里一切正常,但我在这里得到的错误是:

液体异常:无法在任何 ["/Users/USER/Sites/MY-PROJECT/src/_includes"] 中找到包含的文件“.for”。确保它存在于这些目录之一中,并且如果它是符号链接,则不会指向您的站点源之外。在 icicle.html

这很奇怪。我错过了什么?

解决方法

您可能只需要使用输出标签 curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Authorization: bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI0Smd1Y0t6NVZ4RWNnWXFXQW1yTnFCd0dITFJ5ekZxRGJYTHZ4NzRfZzY0In0.eyJqdGkiOiIzZmFiMjBmYy1mNDQ0LTQyY2EtYjA4MS04ZTBhYmUyNTBhZGUiLCJleHAiOjE2MTk0NjQ0OTMsIm5iZiI6MCwiaWF0IjoxNjE5NDY0MTkzLCJpc3MiOiJodHRwOi8vMTgwLjEzNS4xNjEuMTE6ODA4MC9hdXRoL3JlYWxtcy9tYXN0ZXIiLCJhdWQiOiJnZXRzdG9yZS1tb2JpbGUtdGVtcCIsInN1YiI6ImQ2NDMyMjcxLTA5MDQtNDlhOC1hZjMyLTVlYjZkM2UzMzE5MCIsInR5cCI6IkJlYXJlciIsImF6cCI6ImdldHN0b3JlLW1vYmlsZS10ZW1wIiwiYXV0aF90aW1lIjowLCJzZXNzaW9uX3N0YXRlIjoiNDQ1NzRiODUtZDI3Ny00OWZhLThmMjAtMGE5NTE0MTRiYWZkIiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6W10sInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJ1bWFfYXV0aG9yaXphdGlvbiIsIkVTVEFCRUxFQ0lNRU5UTyJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sImNsaWVudElkIjoiZ2V0c3RvcmUtbW9iaWxlLXRlbXAiLCJjbGllbnRIb3N0IjoiMTAuMTgxLjExMi4yMTUiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtZ2V0c3RvcmUtbW9iaWxlLXRlbXAiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTgxLjExMi4yMTUiLCJlbWFp' -d '{ ..... }' 'http://localhost:40070/log' 而不是非输出标签 {{ include.for }}。此处的 {% include.for %}include.title 也是如此。

您应该传递一个不带引号的变量,否则您将传递字符串文字 include.content 而不是 "purpose" 变量保存的值。

尽管无论如何它都可以工作,但我会尽可能避免使用 purpose 作为键,因为它是 Liquid 中使用的 for 循环关键字。