【问题标题】:jekyll markdown internal linksjekyll markdown 内部链接
【发布时间】:2011-06-05 12:09:10
【问题描述】:

Jekyll 使用 Markdown 格式的链接,但我如何链接到内部内容?

[[link]] 

【问题讨论】:

    标签: markdown jekyll


    【解决方案1】:

    您现在可以使用以下方式发布内部链接:

    [Some Link]({% post_url 2010-07-21-name-of-post %})
    

    这在Jekyll Documentation 中也有引用。

    https://github.com/mojombo/jekyll/pull/369

    【讨论】:

    • 知道如何在内部链接到页面吗?
    • 看起来无法链接到页面。此 PR 已关闭且未合并:github.com/jekyll/jekyll/pull/369
    • 是否可以让标题轻松显示,例如使用单个命令渲染到[Title of post](/correct/permalink)?我只能通过过于冗长的过滤来做到这一点。
    • 如果你有子目录:[Link's Text]({% post_url /dirname/2010-07-21-post %})
    • 只是一个小提示:不要在 2010-07-21-name-of-post 中包含扩展名。
    【解决方案2】:

    对于页面,they decided not to add a page_url tag 因为无论如何您都必须知道页面的路径。所以你只需要手动链接到它:

    [My page](/path/to/page.html)
    

    或者如果你想以编程方式获取页面标题,你可以做一些大而丑陋的事情:

    {% for page in site.pages %}
      {% if page.url == '/path/to/page.html' %}
    [{{ page.title }}]({{ page.url }})
      {% endif %}
    {% endfor %}
    

    【讨论】:

    • 正如另一个答案所指出的,建议使用{% link ... %} 标签,因为它有助于确保正确建立链接,如果链接断开,它会给你一个错误。见jekyllrb.com/docs/liquid/tags/#link
    【解决方案3】:

    现在可以使用link 标签链接到帖子以外的页面。 link 适用于帖子、页面、集合中的文档和文件。

    {{ site.baseurl }}{% link _collection/name-of-document.md %}
    {{ site.baseurl }}{% link _posts/2016-07-26-name-of-post.md %}
    {{ site.baseurl }}{% link news/index.html %}
    {{ site.baseurl }}{% link /assets/files/doc.pdf %}
    

    记得在使用link 标签时包含文件扩展名。 要使用它来创建链接:

    [Link to a document]({{ site.baseurl }}{% link _collection/name-of-document.md %})
    [Link to a post]({{ site.baseurl }}{% link _posts/2016-07-26-name-of-post.md %})
    [Link to a page]({{ site.baseurl }}{% link news/index.html %})
    [Link to a file]({{ site.baseurl }}{% link /assets/files/doc.pdf %})
    

    Jekyll Documentation

    【讨论】:

    • 我还发现此文档页面很有帮助 - jekyllrb.com/docs/liquid/tags/#link
    • 我刚刚发现没有必要使用{{ site.baseurl }},因为它将生成的href中的baseurl值加倍。 [Link to a post]({% link _posts/2016-07-26-name-of-post.md %})
    • 您需要在 Jekyll 3.x 上使用 site.baseurl,在 4.x 中不再需要它。但是 Pages 仍然停留在 3.x 作为最大版本,AFAIK。
    【解决方案4】:

    在 Jekyll 中有多种链接方式,其中一些现在已经过时了。

    带有链接标签

    推荐的链接到内部文件的方法是

    [Link]({{ site.baseurl }}{% link path/to/file.md %})
    

    请注意,如果文件移动或被删除,这将导致错误。

    带有固定链接

    要链接到页面而不会导致错误(而不是断开的链接):

    [Link]({{ '/path/to/page/' | relative_url }})
    

    注意这里你需要知道页面的永久链接并通过relative_url过滤器来确保它以站点的基本url为前缀。

    页面的永久链接取决于配置文件中的permalink 设置和文件开头的permalink 键。

    使用 jekyll 相对链接

    如果你想使用相对路径(并且希望链接在 GitHub 的 markdown 视图中工作),你应该使用jekyll-relative-links。这使您可以编写如下链接:

    [Link](./path/to/file.md)
    
    [Link to file in parent folder](../file.md)
    

    【讨论】:

      【解决方案5】:

      如果内部内容在同一页面上,则可以使用auto_ids 功能链接到它。您在_config.yml 中启用此功能:

      kramdown:
          auto_ids: true
      

      启用此功能后,每个标题都会根据标题文本获得一个 id 引用。例如

      ### My Funky Heading
      

      会变成

      <h3 id="my-funky-heading">My Funky Heading</h3>
      

      您可以通过执行以下操作从同一文档中链接到此:

      The funky text is [described below](#my-funky-heading)
      

      如果您愿意,可以指定一个明确的 id:

      ### My Funky Heading
      {: #funky }
      

      并链接到它

      The funky text is [described below](#funky)
      

      【讨论】:

      • 即使你想引用除标题之外的其他元素,它也能工作。
      • 这也可以扩展为其他页面中的链接。例如:[文本] (/path/to/file/#funky)
      • 请注意kramdown auto_ids 功能是true by default,所以只要您没有明确禁用 _config.yml,就可以启用它。跨度>
      【解决方案6】:

      想象这是你的项目目录:

      要将“index.md”链接到文件夹“blog”中名为“20190920-post1.md”的文件,请执行以下操作:

      1. 打开文件“index.md”。
      2. 添加以下内容:

        [任何文本](./相对路径)

      例如:

      - [Sept 20th 2019 - Kikucare's Journey](./blog/20190920-post1.md)
      

      输出:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-31
        • 1970-01-01
        • 2018-04-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多