Ghost 博客中的相关 Posts - 不包括当前 Post
Related Posts In Ghost Blog - Excluding Current Post
我正在使用 Ghost 作为博客平台。当用户阅读 post 时,我想显示一些相关的 post。
{{#foreach tags limit="1"}}
{{#get "posts" filter="tags:{{slug}}" limit="6" include="author,tags" as |article|}}
{{#foreach article}}
....
{{/foreach}}
{{/get}}
{{/foreach}}
我设法获得了相关 post,但我在从结果中删除当前 post 时遇到了问题。
根据 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,所以这是不正确的。
我设法通过这种方式在标签范围内访问了我的 post ID {{../id}} 但我无法通过这种方式在过滤器中使用它,它也不起作用。
任何关于如何解决它的想法将不胜感激。
我认为 {{id}}
可以。刚刚尝试了这个,它通过删除当前 post 的 id 但保留其他的 id 来工作:
{{#get "posts" limit="all" filter="id:-{{id}}"}}
{{#foreach posts}}
{{id}}
{{/foreach}}
{{/get}}
但必须在您的 {{#post}}
范围内。
我使用 jQuery 实现了我所需要的。
首先我得到当前 post id 调用我的函数,获取那个 post 的标签。
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);
});
}
然后我得到所有具有相同标签但与我当前的 post id 不同的 posts。
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);
});
}
我正在使用 Ghost 作为博客平台。当用户阅读 post 时,我想显示一些相关的 post。
{{#foreach tags limit="1"}}
{{#get "posts" filter="tags:{{slug}}" limit="6" include="author,tags" as |article|}}
{{#foreach article}}
....
{{/foreach}}
{{/get}}
{{/foreach}}
我设法获得了相关 post,但我在从结果中删除当前 post 时遇到了问题。
根据 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,所以这是不正确的。
我设法通过这种方式在标签范围内访问了我的 post ID {{../id}} 但我无法通过这种方式在过滤器中使用它,它也不起作用。
任何关于如何解决它的想法将不胜感激。
我认为 {{id}}
可以。刚刚尝试了这个,它通过删除当前 post 的 id 但保留其他的 id 来工作:
{{#get "posts" limit="all" filter="id:-{{id}}"}}
{{#foreach posts}}
{{id}}
{{/foreach}}
{{/get}}
但必须在您的 {{#post}}
范围内。
我使用 jQuery 实现了我所需要的。
首先我得到当前 post id 调用我的函数,获取那个 post 的标签。
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);
});
}
然后我得到所有具有相同标签但与我当前的 post id 不同的 posts。
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);
});
}