车把{{path}}视为相对而非绝对链接

时间:2018-07-24 18:09:39

标签: javascript handlebars.js metalsmith

我正在用Metalsmith创建一个以车把为模板的网站。

我创建了一个名为/articles/index.html的存档页面,该页面将/ articles /中的所有文章按时间顺序列出,但是当我点击存档页面中的链接时,它会将我带到/ articles / articles / example -post.html而不是/articles/example-post.html。如何使我进入URL的绝对版本而不是相对版本?

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

<div>TABLE 1</div>
<table>
  <tr>
    <td>
      <h3></h3>
      <span data-update="status"> SOME TEXT </span>
      <span data-update="status"> SOME TEXT </span>
      <span data-update="status"> SOME TEXT </span>
    </td>
    <td>
    </td>
  </tr>
  <tr>
    <td>
      <h3></h3>
      <span data-update="status"> SOME TEXT </span>
      <span data-update="status"> SOME TEXT </span>
    </td>
    <td>
      <h3></h3>
      <span data-update="status"> SOME TEXT </span>
    </td>
  </tr>
</table>

<div>TABLE 2</div>
<table>
  <tr>
    <td>
      <h3></h3>
      <span data-update="status"> SOME TEXT </span>
      <span data-update="status"> SOME TEXT </span>
      <span data-update="status"> SOME TEXT </span>
    </td>
    <td>
    </td>
  </tr>
  <tr>
    <td>
      <h3></h3>
      <span data-update="status"> SOME TEXT </span>
      <span data-update="status"> SOME TEXT </span>
    </td>
    <td>
      <h3></h3>
      <span data-update="status"> SOME TEXT </span>
    </td>
  </tr>
</table>

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

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

我在主页上进行了几乎相同的设置,其工作方式与应有的设置完全相同。知道如何在子文件夹中运行它吗?

编辑:好的,我应该清楚:我意识到{{path}}是相对链接,而不是绝对链接。我的问题应该是:“当我只使用{{path}}并且是相对的时,如何使它正常工作?是否应该访问另一个变量以产生正确的链接?或者是否有一个如何编辑{{path}}以使其指向正确的文件?据我所知,无法在Handlebars中编辑变量,因此无法在链接上附加'/'或删除开头的“文章/”。

2 个答案:

答案 0 :(得分:3)

通常,最好使用相对URL而不是绝对URL,因此您的应用程序不与该应用程序环境绑定。

但是如果您需要使用绝对值,则可以使用/path/to/somewhere代替path/to/somewhere

之所以对您的首页有效,但对其他网页却无效的原因是,当您进入首页时,相对路径和绝对路径之间没有区别。因此,/location/pathlocation/path处于根目录时是相同的。

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

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

答案 1 :(得分:0)

最终,我最终在我的构建中使用了metalsmith-paths,该路径向文件的元数据添加了一系列路径,其中包括“ href”路径,这基本上就是我想要的。

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

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

所以,是的,我使用的链接是错误的。

如果您碰巧需要像我想的那样直接在“车把”中“修复”链接,我仍然不确定该告诉您什么,但是如果可能的话,它可能涉及到帮助者。