Jekyll:根据页面变量

时间:2018-04-16 15:19:40

标签: variables jekyll

我的问题

我正在Jekyll写一个静态网站。每个帖子应该有一个"发布者"带有作者姓名的副标题,带有指向其网页的可选链接,如果未定义作者姓名,则返回网站标题。

例如,假设我的网站标题是" Acme corp"。

作者和"网址

author: Someone
author_url: https://their_site.com

应该给[Someone](https://their_site.com)

作者

author: Someone

应该给Someone

没有作者

应该给Acme corp

我尝试了什么

我可以将逻辑硬编码到_layouts/post.html页面中,但我必须在其他页面模板中重复自己:

<span class="meta">Posted by
{% if page.author_url %}
<a href="{{ page.author_url }}">
{% endif %}
{% if page.author %}{{ page.author }}{% else %}{{ site.title }}{% endif %}
{% if page.author_url %}
</a>
{% endif %}
on {{ page.date | date: "%B %-d, %Y" }}</span>

我的问题

有没有办法根据author_htmlpage.author的值来定义全局变量(例如page.author_url),这些值可以在所有模板页面上访问?

1 个答案:

答案 0 :(得分:1)

为什么不制作author.html包含并在参数中调用当前作者的包含(或默认情况下的回退),例如:

{% capture author_link %}
  {% if page.author_url %}
  <a href="{{ page.author_url }}">
  {% endif %}
  {% if page.author %}{{ page.author }}{% else %}{{ site.title }}{% endif %}
  {% if page.author_url %}
  </a>
  {% endif %}
{% endcapture %}
{% include author.html author=author_link %}

在包含中,您可以通过致电include.author来获取作者。有关详细信息,请参阅包含的jekyll-docs。 我希望这能解决你的问题。