Я делаю веб-сайт с Metalsmith по шаблону с Handlebars.
Я создал страницу архива с именем /articles/index.html, которая берет все статьи в / article / и перечисляет их в хронологическом порядке, но когда я перехожу по ссылке на странице архива, я попадаю в / article / article / 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.info для своих сгенерированных файлов, я получаю такой вывод:
'/articles/example-post/index.html':
{ title: 'Example Post',
...
path: 'articles/example-post'
...
}
У меня почти такая же настройка на моей домашней странице, которая работает точно так же, как и должна. Есть идеи, как запустить это в подпапках?
Обновлено: Хорошо, я должен быть ясен: я понимаю, что {{путь}} является относительной ссылкой, а не абсолютной. Мой вопрос должен быть таким: «Как мне заставить это работать правильно, если у меня есть только {{path}} для работы, и он относительный? Есть ли другая переменная, к которой я должен иметь доступ, которая создаст правильную ссылку, или есть способ отредактировать {{path}} так, чтобы он указывал на правильные файлы? Насколько я смог найти, нет возможности редактировать переменную в Handlebars, поэтому я не могу добавить '/' к моей ссылке или убрать начальную строку "article /".
🤔 А знаете ли вы, что...
JavaScript позволяет создавать расширения для веб-браузеров, улучшая их функциональность.
Как правило, лучше использовать относительный URL-адрес вместо абсолютного, чтобы ваше приложение не было привязано к этому приложению env.
Но если вам нужно использовать абсолют, вы можете использовать /path/to/somewhere
вместо path/to/somewhere
.
Причина, по которой он работает для вашей домашней страницы, НО не для других ваших страниц, заключается в том, что, когда вы находитесь на домашней странице, нет разницы между вашим относительным и абсолютным путем. Итак, /location/path
и location/path
одинаковы, когда вы находитесь в корневом каталоге.
Вот еще один вариант поставить /
спереди:
<a href = "/posts/{{../permalink}}#{{id}}">{{title}}</a>
В конце концов, в своей сборке я использовал metalmith-paths, который добавляет массив путей к метаданным файла, включая путь "href", который я и искал.
В конечном итоге мой сценарий выглядел так:
{{#if archive}}
<ul>
{{#each collections.article}}
<li><a href = {{paths.href}}>{{date}} - {{title}} - {{description}}</a></li>
{{/each}}
</ul>
{{/if}}
Так что да, ссылки, которые я использовал, были просто неправильными.
Если вам нужно «исправить» ссылку в Handlebars напрямую, как я думал, я все еще не уверен, что вам сказать, но, вероятно, это связано с помощниками, если это возможно.