如何在Ghost中查找具有特定标记的所有帖子并迭代它们?

时间:2015-05-21 00:52:48

标签: javascript templates handlebars.js ghost-blog ghost

我目前正在开发一个Ghost博客(Ghost是一个Wordpress“继承者”,它基于Node.js和该平台上的其他各种软件包/库),但我想知道我怎么能抓到所有在Ghost / Handlebars.js中都有某个标签的帖子。

问题是Ghost的上下文通常被封装到我无法从API中提取带有某个标签的所有帖子的列表;显然只能迭代{{#foreach posts}}的帖子,其他解决方案有点黑客或者更多地使用jQuery。

我怎样才能获得Ghost中所有帖子的列表或数组,以便我可以按标签过滤它们然后迭代它们?我甚至尝试了{{1 }和{{#has tag='WHATEVER'}},但这种方法似乎没有开箱即用。作为Ghost和Handlebars的新手,我不确定该怎么做。

2 个答案:

答案 0 :(得分:16)

如果有人遇到这个问题,现在就可以了。以下是通过get helper实现的方法:

{{#get "posts" filter="tags:tagname"}}
    {{#foreach posts}}
         <p>{{title}}</p>
    {{/foreach}}
{{/get}}

{{#get "posts" filter="tags:[tag1, tag2]"}}
    {{#foreach posts}}
         <p>{{title}}</p>
    {{/foreach}}
{{/get}}

答案 1 :(得分:7)

注意:在撰写本文时,这个答案是正确的。 {{#get}}助手已于2015年11月添加,自Ghost 1.0(2017年8月)起默认可用。这里记录了:https://themes.ghost.org/docs/get

大卫的答案现在应该是公认的答案。

theme documentation FAQ中所述,目前无法列出所有标签。这也引用了路线图中的get helper功能,以便将来使用。

当前版本的Ghost有一种不太可能的方法是使用JavaScript来获取RSS提要的页面,并遍历每个页面,从每个帖子中抓取标记。这将有效,但值得记住的是,RSS源的分页将在未来版本中消失(在API完全可用之后,因此将有一个迁移路径)。

一旦发布了get helper,这将成为一个简单的帮助者:{{#get 'tags'}}...do things with tags here...{{/get}}。此功能正在积极开发中。