2013-09-21 1 views
1

Как настроить коллекции DocPad при использовании JavaScript?Как собираются коллекции DocPad с использованием JavaScript? "предупреждение: пользовательская коллекция XYZ не является допустимым экземпляром коллекции"

следующее сообщение отображается во время запуска сайта: «предупреждение: Обычай коллекция MyCollection не является допустимым сбор экземпляра»

Конфигурация:

var docpadConfig = { 
    collections: { 
    // The collection causing problems. 
    myCollection: function() { 
     return []; 
    } 
    }, 

    templateData: { 
    site: { 
     url: "http://site-url.com", 
     oldUrls: [], 
     title: "Site title", 
     description: "Site description", 
     keywords: "DocPad", 
     styles: ["/vendor/normalize.css", "/vendor/h5bp.css", "/styles/style.css"], 
     scripts: ["/vendor/log.js", "/vendor/modernizr.js", "/scripts/script.js"] 
    }, 

    getPreparedTitle: function() { 
     if (this.document.title) { 
     return this.document.title + " | " + this.site.title; 
     } else { 
     return this.site.title; 
     } 
    }, 

    getPreparedDescription: function() { 
     return this.document.description || this.site.description; 
    }, 

    getPreparedKeywords: function() { 
     return this.site.keywords.concat(this.document.keywords || []).join(", "); 
    } 
    } 
}; 

module.exports = docpadConfig; 

Наблюдая несколько клипов YouTube Бенджамина Lupton I что DocPad использует Backbone.js - должен ли я каким-то образом импортировать Backbone и использовать экземпляры Backbone.Collection в конфигурации? Если да, как мне это сделать? Я нашел много примеров сценариев кофе, но я не могу понять, как применять их к простому JavaScript.

Любые длительные примеры конфигурации JavaScript будет высоко ценится, так как я уверен, что я хочу, чтобы настроить конфиг еще немного рано или поздно :)

ответ

3

Понял работает используя:

var docpadConfig = { 
    collections: { 
    journalEntries: function() { 
     var documents = this.getCollection("documents"); 
     var sortByDescendingDate = [{ date: -1 }]; 
     // I've added "type" to the meta section of some documents. 
     var typeEqualsJournal = { type: { $eq: "journal" } }; 
     var journals = documents.findAllLive(typeEqualsJournal, sortByDescendingDate); 
     journals.on("add", function (model) { 
     model.setMetaDefaults({ layout: "journal" }); 
     }); 
     return journals; 
    } 
    }, 

...