Jekyll:site.url没有在include标签中解释

时间:2013-12-01 08:47:46

标签: jekyll

我在帖子中使用了以下include标记:

{% include image.html url="{{ site.url }}/files/image.png" description="Figure 1.  image description." %}

包含的image.html如下所示:

<figure>
  <img src="{{ include.url }}" alt="{{ include.description }}">
  <figcaption>{{ include.description }}</figcaption>
</figure>

_config.yml我使用url: "http://domain.com"

但是,在为我的Jekyll博客提供服务时,{{ site.url }}未被解释,导致:

<figure>
  <img src="{{ site.url }}/files/image.png" alt="Figure 1.  image description.">
  <figcaption>Figure 1.  image description.</figcaption>
</figure> 

有谁能告诉我为什么在这种情况下解释不起作用?

2 个答案:

答案 0 :(得分:1)

使用相对网址

{% capture imgFullUrl %}{{ site.url }}{{ site.baseurl }}/files/image.png{% endcapture %}
{% include img.html url=imgFullUrl description="Figure 1.  image description." %}

使用完整网址

{% capture imgRelativeUrl %}{{ site.baseurl }}/files/image.png{% endcapture %}
{% include img.html url=imgRelativeUrl description="Figure 1.  image description." %}

答案 1 :(得分:0)

第一种可能的解决方案:

(如果您的Jekyll网站位于域的根目录)

您根本不需要使用{{ site.url }}

从技术上讲,如果HTML位于某个页面http://domain.com

<img src="/files/image.png">

相同
<img src="http://domain.com/files/image.png">

第二种可能的解决方案:

(如果您的Jekyll站点根位于http://domain.com/jekyll/之类的子目录中,那么您不能只使用/files/image.png

不要将{{ site.url }}从您的实际网页传递到包含。改为在include中包含它:

{% include image.html url="/files/image.png" description="Figure 1.  image description." %}

然后

<figure>
  <img src="{{ site.url }}{{ include.url }}" alt="{{ include.description }}">
  <figcaption>{{ include.description }}</figcaption>
</figure>

如果您想同时显示来自外部网址的图片,则不能只在{strong>每个图片网址前面点击{{ site.url }}
在这种情况下,您可以检查图片网址是否以/开头,并且只有在这种情况下才会显示{{ site.url }}

<figure>
  {% assign tmp = include.url | truncate: 1, '' %}
  <img src="{% if tmp == '/' %}{{ site.url }}{% endif %}{{ include.url }}" alt="{{ include.description }}">
  <figcaption>{{ include.description }}</figcaption>
</figure>