如何为集合生成设置docpad.coffee帮助函数?

时间:2013-10-08 11:54:25

标签: docpad

对于集合,我想使用docpad.coffee中定义的帮助程序,例如

getLang: (inLang) ->
    "/" + inLang  + "/"
...
myCollection: ->
        @getCollection("html").findAllLive().on "add", (model) ->
           model.setMeta({ url: @getLang("en") + defaultUrlPartGoesHere })

但无法让FilesCollection知道我的助手:/

如何设置辅助函数以用于集合定义?

2 个答案:

答案 0 :(得分:3)

引用docpadConfig.templatedata.getLang()会有效,但如果您发现这种情况令人反感,请记住docpad.coffee只是一个标准的NodeJS模块(用coffeescript编写)。您还可以在docpadConfig文字对象之外定义您的函数,然后将它拉入您的templateData(假设您需要模板)并在构建集合时使用它。

例如:

# define the function outside of the config object
getLang: (inLang) ->
    "/" + inLang  + "/"

docpadConfig = {
    templateData:
        getLang: getLang # reference the previously defined function

    collections:
        myCollection: ->
            # use the previously defined function
            @getCollection("html").findAllLive().on "add", (model) ->
                model.setMeta({ url: getLang("en") + defaultUrlPartGoesHere })  
}

答案 1 :(得分:0)

嗯,不是(最)优雅的方式去使用docpad.coffee中的绝对路径我可以用例如它来引用它。 docpadConfig.templateData.getLang(...)如果在templateData中定义。