12

我目前正在开发一个 Ghost 博客(Ghost 是 Wordpress “继任者”,它基于 Node.js 和该平台上的其他各种包/库),但我想知道如何才能获取所有帖子在 Ghost/Handlebars.js 中有特定标签。

问题是 Ghost 的上下文通常被封装到我无法从 API 中提取带有特定标签的所有帖子的列表。显然只能遍历来自 的帖子index.hbs,而其他解决方案有点骇人听闻或涉及更多使用 jQuery。

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

4

2 回答 2

22

万一有人遇到这种情况,现在这是可能的。以下是您可以通过 get 助手执行此操作的方法:

{{#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}}
于 2016-02-28T16:19:39.597 回答
8

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

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


如主题文档常见问题解答中所述,目前无法列出所有标签。这也引用了路线图上的get helper功能,这将使未来成为可能。

当前版本的 Ghost 的一个有点骇人听闻的可能性是使用 JavaScript 来获取 RSS 提要的页面并循环遍历每个页面,从每个帖子中获取标签。这将起作用,但值得记住的是,RSS 提要的分页将在未来版本中消失(在 API 完全可用后,因此会有迁移路径)。

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

于 2015-05-21T18:37:55.780 回答