jekyll中的动态链接

时间:2014-03-29 01:13:11

标签: jekyll

目前我在静态网站上工作,所以我使用jekyll来生成它。为了拥有一个漂亮的结构和精美的URL,我使用永久链接。

permalink: /impressum/

例如,impressum.html被渲染为impressum / index.html。在我的HTML中,我可以使用

链接到该文件
<a href="/impressum">

这对我很有用。但是你知道,我是一名程序员。如果我想要将URL更改为/ imprint /,该怎么办?好吧,我可以毫无问题地更改固定链接。但是关于网站上所有其他链接的内容是什么?是的,当然,我可以使用搜索&amp;替换我的编辑器的功能来更改链接的URL并使用站点检查器检查整个站点是否存在损坏的链接,但这不是我想要的奇特方式。这就是为什么我试图用固定链接创建某种全局变量的原因。

_config.yml:

lnk_impressum: /impressum/

impressum.html

---
layout: layout
title: Your New Jekyll Site
permalink: {{ site.lnk_impressum }}
---

但这不起作用。我收到这个错误:

Generating... error: no implicit conversion of Hash into String. Use --trace to view backtrace

那么错误还是有更好的方法?

1 个答案:

答案 0 :(得分:0)

根据this SO answer,似乎无法将Liquid标签放在YAML Frontmatter或_config文件中。

您可以尝试的其他内容基于documentation pages for Bootstrap使用的方法,该方法使用他们称为slug的网页变量,为每个网页提供唯一且不变的引用。

例如,如果您要在impressum.html页面上添加链接(固定链接可能会更改),您可以将此代码放在另一个页面上,例如index.html:

{% for mypage in site.pages %}
 {% if mypage.slug == 'impressum' %}
  <a href="{{ mypage.url }}">Link to Impressum page</a>
 {% endif %}
{% endfor %}

然后,在每个页面的YAML前端中,放置类似于以下内容的代码:

---
slug: impressum
permalink: /my-permalink-to-impressum/
---

要在将来更改永久链接,您只需在每个页面中更改页面变量permalink即可。只要slug变量保持不变,Jekyll就会自动更新其他页面中引用的网址。