我正在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_html
和page.author
的值来定义全局变量(例如page.author_url
),这些值可以在所有模板页面上访问?
答案 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。
我希望这能解决你的问题。