我正在用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中编辑变量,因此无法在链接上附加'/'或删除开头的“文章/”。
答案 0 :(得分:3)
通常,最好使用相对URL而不是绝对URL,因此您的应用程序不与该应用程序环境绑定。
但是如果您需要使用绝对值,则可以使用/path/to/somewhere
代替path/to/somewhere
之所以对您的首页有效,但对其他网页却无效的原因是,当您进入首页时,相对路径和绝对路径之间没有区别。因此,/location/path
和location/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}}
所以,是的,我使用的链接是错误的。
如果您碰巧需要像我想的那样直接在“车把”中“修复”链接,我仍然不确定该告诉您什么,但是如果可能的话,它可能涉及到帮助者。