簡體   English   中英

Ghost 博客中的相關帖子 - 不包括當前帖子

[英]Related Posts In Ghost Blog - Excluding Current Post

我使用 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}} 我得到一個值,但是這是標簽 ID,所以這是不正確的。

我設法以這種方式在標簽范圍內訪問我的帖子 ID {{../id}} 但我不能以這種方式在過濾器中使用它,它也不起作用。

關於如何解決它的任何想法將不勝感激。

我使用 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);
  });
}

我認為只有{{id}}會起作用。 剛試過這個,它的工作原理是刪除當前帖子的 id 但留下其他帖子:

{{#get "posts" limit="all" filter="id:-{{id}}"}}
    {{#foreach posts}}
        {{id}}
    {{/foreach}}
{{/get}}

不過必須在您的{{#post}}范圍內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM