Элементы управления, рассматривающие {{path}} как относительную, а не абсолютную ссылку

Я делаю веб-сайт с 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 позволяет создавать расширения для веб-браузеров, улучшая их функциональность.


3
1 191
2

Ответы:

Решено

Как правило, лучше использовать относительный 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 напрямую, как я думал, я все еще не уверен, что вам сказать, но, вероятно, это связано с помощниками, если это возможно.