幽灵博客中的相关帖子 - 不包括当前帖子

时间:2016-10-01 17:43:26

标签: ghost-blog ghost

我使用Ghost作为博客平台。当用户正在阅读帖子时,我想展示一些相关的帖子。

{{#foreach tags limit="1"}}
    {{#get "posts" filter="tags:{{slug}}" limit="6" include="author,tags" as |article|}}
        {{#foreach article}}
          ....
        {{/foreach}}
    {{/get}}
{{/foreach}}

我设法获得了相关帖子,但是我在从结果中删除当前帖子时遇到了问题。

根据Ghost文档,我应该可以在过滤器中使用此添加项:

"+id:-{{post.id}}"

像这样:

{{#get "posts" filter="tags:{{slug}}+id:-{{post.id}}" limit="6" include="author,tags" as |article|}}

不幸的是,这不起作用,{{post.id}}甚至不打印任何内容,无论我在哪个范围内。只需使用{{id}}代替{{post.id}}我&# 39;获得一个值,但它是标签ID,因此不正确。

我设法以这种方式{{../id}}在标记范围内访问我的帖子ID,但我不能以这种方式在过滤器中使用它,它也不起作用。

任何关于如何解决它的想法都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

我使用jQuery实现了我所需要的。

首先,我获取当前的帖子ID,调用我的函数,获取该帖子的标签。

  function getCurrentPosts(id) {
$.get(ghost.url.api('posts', {filter: 'id:' + id, include: 'tags'})).done(function (data){
      var tags = data.posts[0].tags;
      getRelatedPosts(id, tags)

}).fail(function (err){
    console.log(err);
  });
}

然后我收到所有帖子,这些帖子具有相同的标签,并且与我当前的帖子ID具有不同的ID。

function getRelatedPosts(id, tags) {
tags = tags.map(function(obj){ 
   return  obj.slug ;
}).join(', ');

tags = '[' + tags + ']';

$.get(ghost.url.api('posts', {filter: 'id:-' + id + ' +tags:' + tags, include: "author, tags" })).done(function (data){
      var posts = data.posts;
      console.log(posts.length)
      if (posts.length > 0) {
        showRelatedPosts(posts);
      }
      else{
        $('.related-section').hide();
      }
}).fail(function (err){
     console.log(err);
  });
}

答案 1 :(得分:0)

我认为只有Column才有效。刚试过这个,它的工作原理是删除当前帖子的id,但留下其他帖子:

{{id}}

但必须在{{#get "posts" limit="all" filter="id:-{{id}}"}} {{#foreach posts}} {{id}} {{/foreach}} {{/get}} 范围内。