Ghost:首页上带有特定标签的最新帖子

时间:2014-12-08 11:27:32

标签: handlebars.js ghost-blog

我正在为我的博客开发一个Ghost模板。我想在首页上看到来自具有特定标签的帖子的最新帖子(例如“新闻”)。

是否可以按foreach循环中的标记过滤帖子?

还有其他解决方案吗? (首先想到的是使用自定义模板tag-news.hbs和URL重写的一些技巧)

5 个答案:

答案 0 :(得分:11)

您绝对可以使用{{has}}帮助程序按标记过滤帖子:

{{#foreach posts}}
  {{#has tag="news"}}
      {{> post}}
  {{/has}}
{{/foreach}}

您可以将此代码添加到home.hbs文件中,它只会在您的主页上使用。

如果您希望其他列表页面有多个帖子,我不确定将其限制为一个帖子的最佳方法。您可能必须编写自定义帮助程序。

您可以访问@index变量,但如果第一篇帖子中包含“新闻”,则@index将为2,因为它会以foreach为增量{{1}} 1}}循环。

很快您就可以使用api:https://github.com/TryGhost/Ghost/wiki/%5BWIP%5D-API-Documentation

答案 1 :(得分:5)

在阅读了最近关闭的冗长讨论GitHub Ghost Issue: Query (get) helper #4439之后,好消息 - 帮助者和过滤器正被添加到Public API v1

The {{#get}} helper #5619刚刚合并为master(仍然不稳定),所以解决方案:

{{#get "posts" featured="true" as |featured|}}
  {{#foreach featured}}
    ...
  {{/foreach}}
 {{/get}}

答案 2 :(得分:4)

我为Ghost创造了一个小小的黑客。它将{{by_tag}}帮助器添加到主题模板

  1. 使用代码from this gist
  2. 在ghost目录中创建helpers.js.
  3. 第一行添加到您的config.js:require('./helpers')();
  4. 重新启动幽灵
  5. {{#by_tag}}助手

    按标签选择帖子。可选的limit参数。

    示例:

     {{#by_tag 'dev'}}
         {{#foreach posts}}
             {{title}}
             {{content}}
         {{/foreach}}
     {{/by_tag}}
    
     {{#by_tag 'music' limit=3}}
        {{#foreach posts}}
             {{title}}
             {{content}}
         {{/foreach}}
     {{/by_tag}}
    

    {{#node_env}}助手

    示例:

    {{#node_env production}}
         ...production only 
    {{/node_env}}
    

答案 3 :(得分:0)

index.hbs

    <div class="post-feed">
      {{#foreach posts}}
          {{^has tag="videos"}}
            {{! this block will not show posts tagged videos }}
            {{> "post-card"}}
          {{/has}}
      {{/foreach}}
    </div>

tag-videos.hbs

    <div class="post-feed">
        {{#foreach posts}}
            {{#has tag="videos"}}
              {{! this block will show posts tagged videos }}
              {{> "post-card"}}
            {{/has}}
        {{/foreach}}
    </div>

希望这有帮助!

答案 4 :(得分:0)

只需添加一些有用的信息,如果您想添加特色帖子,这是这样的:

{{#get "posts" filter="featured:true" as |featured| }}
  <ol>
  {{#foreach featured}}
    <li><a href="{{url}}">{{title}}</a></li>
  {{/foreach}}
  </ol>
{{/get}}

要大致了解您可以做什么,请访问官方GitHub

希望有帮助