2015-02-16 1 views
3

Мой шаблон:metalmith-collections 'path' ключ недоступен из шаблона Handlebars?

{{#each collections }} 
<span class="Category__Title">{{ @key }}</span> 
    {{#each this }} 
    <a href="{{ this.path }}">{{ this.title }}</a> 
    {{/each}} 
{{/each}} 

Визуализирует (this.path не определено):

<span class="Category__Title">French</span> 
    <a href="">Braised vegetables</a> 
<span class="Category__Title">Thai</span> 
    <a href="">Rice noodles</a> 

Я использую: по металлу

metalsmith 
    .use(collections()) 
    .use(markdown()) 
    .use(templates({ 
    engine: 'handlebars', 
    directory: 'templates' 
    })) 
    .use(permalinks({ 
    pattern: ':title' 
    })) 
    .destination('./public') 

Во время компиляции, я утешаю журнал к сбору

var m = metalsmith.metadata(); 
console.log(m.collections); 

И я вижу, что каждая коллекция имеет массив файлов, и каждый файл содержит ключ «путь». Консолированный журнал ->

{ title: 'Braised vegetables', 
    date: '10/12/1923', 
    tags: [ 'braise', 'old world' ], 
    collection: [ 'french' ], 
    template: 'recipe.hbt', 
    contents: <Buffer 3...>, 
    mode: '0644', 
    stats: { }, 
    path: 'women-s-liberation-1906' } 

Strange? Я могу программным образом обращаться к файловому пути через узел. Кроме того, Handlebars имеет доступ к файлу file.title и каждому другому ключу. Заранее спасибо за помощь.

ответ

5

Спасибо, отправив свой вопрос. Я понял, что пытаюсь получить доступ к ключу «путь», прежде чем у permalinks появилась возможность добавить это свойство в дерево файлов - просто перемещение permalinks над шаблонами решило эту проблему.

.use(permalinks({ 
    pattern: ':title', 
    relative: false 
    })) 
    .use(templates({ 
    engine: 'handlebars', 
    directory: 'templates' 
    })) 
+0

Удивительный! Я провел последние три часа в поисках решения @. @ Спасибо! – Matt

+0

рад! спасибо за крик @Matt – tgk