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

Cin*_*lue 9 javascript templates handlebars.js ghost-blog ghost

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

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

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

Dav*_*vid 17

如果有人遇到这个问题,现在就可以了.以下是通过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}}
Run Code Online (Sandbox Code Playgroud)

  • Tags:[tag1, tag2] 表示带有 tag1 和/或 tag2 的帖子...如何使用过滤必须同时具有两者的帖子的选项来执行此操作? (2认同)

Eri*_*sDS 7

注意:在撰写本文时,这个答案是正确的.将{{#get}}在2015年11月加入帮手,并已获得通过,因为鬼1.0(AUG 2017)默认.它记录在这里:https://themes.ghost.org/docs/get

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


目前无法列出所有标签,如主题文档FAQ中所述.这也引用了路线图上的get helper功能,以便将来使用.

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

一旦获得了助手,这将成为一个直截了当的帮手:{{#get 'tags'}}...do things with tags here...{{/get}}.此功能正在积极开发中.