【问题标题】:Dynamic Links in jekylljekyll 中的动态链接
【发布时间】:2014-05-08 16:15:53
【问题描述】:

目前我正在开发静态网站,所以我使用 jekyll 来生成它。为了有一个漂亮的结构和花哨的 URL,我使用永久链接。

permalink: /impressum/

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

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

这对我很有效。但你知道,我是一名程序员。例如,如果我想将 URL 更改为 /imprint/,该怎么办?好吧,我可以毫无问题地更改永久链接。但是网站上的所有其他链接又是怎样的呢?是的,当然,我可以使用我的编辑器的搜索和替换功能来更改链接的 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

那么有什么问题或者有更好的方法吗?

【问题讨论】:

    标签: jekyll


    【解决方案1】:

    根据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 frontmatter 中,放置类似于以下内容的代码:

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

    以后要更改永久链接,您只需更改每个页面中的页面变量permalink。只要 slug 变量保持不变,Jekyll 会自动更新您其他页面中引用的 URL。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多