我目前正在开发一个Ghost博客(Ghost是一个Wordpress“继承者”,它基于Node.js和该平台上的其他各种软件包/库),但我想知道我怎么能抓到所有在Ghost / Handlebars.js中都有某个标签的帖子。
问题是Ghost的上下文通常被封装到我无法从API中提取带有某个标签的所有帖子的列表;显然只能迭代{{#foreach posts}}
的帖子,其他解决方案有点黑客或者更多地使用jQuery。
我怎样才能获得Ghost中所有帖子的列表或数组,以便我可以按标签过滤它们然后迭代它们?我甚至尝试了{{1 }和{{#has tag='WHATEVER'}}
,但这种方法似乎没有开箱即用。作为Ghost和Handlebars的新手,我不确定该怎么做。
答案 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}}
。此功能正在积极开发中。