把手将 {{path}} 视为相对而非绝对 link

Handlebars treating {{path}} as relative rather than absolute link

我正在使用 Metalsmith 创建一个网站,该网站使用 Handlebars 进行模板化。

我制作了一个名为 /articles/index.html 的存档页面,它包含 /articles/ 中的所有文章并按时间顺序列出它们,但是当我在存档中跟随 link页面将我带到 /articles/articles/example-post.html 而不是 /articles/example-post.html。如何让它将我带到 URL 的绝对版本而不是相对版本?

我用来生成存档的 Handlebars 脚本是:

{{#if archive}}
  <ul>
    {{#each collections.article}}
    <li><a href={{path}}>{{date}} - {{title}} {{description}}</a></li>
    {{/each}}
  </ul>
{{/if}}

{{path}} 元数据由 Metalsmith 自动生成。当我对生成的文件调用 console.log 时,我得到如下输出:

'/articles/example-post/index.html':
  { title: 'Example Post',
  ...
  path: 'articles/example-post'
  ...
  }

我的主页上有一个几乎完全相同的设置,可以正常工作。知道如何在子文件夹中获取此 运行 吗?

编辑:好的,我应该清楚:我知道 {{path}} 是相对的 link,而不是绝对的。我的问题应该是:“当我只有 {{path}} 可以使用并且它是相对的时,我如何让它正常工作?是否有另一个我应该能够访问的变量会产生正确的 link或者有没有办法编辑 {{path}} 以便它指向正确的文件?据我所知,没有办法在 Handlebars 中编辑变量,所以我不能附加 '/ ' 到我的 link 或去掉前导 'article/'.

通常,最好使用相对 url 而不是绝对 url,这样您的应用就不会绑定到该应用环境。

但是如果需要使用absolute,可以使用/path/to/somewhere代替path/to/somewhere

它适用于您的主页但不适用于您的其他页面的原因是当您在主页时,您的相对路径和绝对路径之间没有区别。所以 /location/pathlocation/path 在根目录下是一样的。

这里是另一种将 / 放在前面的选项:

<a href="/posts/{{../permalink}}#{{id}}">{{title}}</a>

最终,我最终在我的构建中使用了 metalsmith-paths,它向文件的元数据添加了一组路径,包括 "href" 路径,这基本上就是我要找的。

最终,我的脚本看起来像:

{{#if archive}}
  <ul>
    {{#each collections.article}}
    <li><a href={{paths.href}}>{{date}} - {{title}} - {{description}}</a></li>
    {{/each}}
  </ul>
{{/if}}

所以,是的,我使用的 links 是错误的。

如果你碰巧需要 "fix" a link in Handlebars directly like I thought I might,我仍然不确定该告诉你什么,但如果可能的话,它可能涉及助手.