想在ghost cms中实现搜索表单。 访客/用户必须能够搜索帖子,作者和标签。 如果可能的话,一些REST api会查询到ghost db并返回像其他公共ghost apis那样的dersired结果。例如api下面的所有帖子包括标签和作者。
ghost.url.api('posts', 'slug', mySlugVariable, {include: 'tags, author'});
所以,我想要这样的东西,我可以传递一些字符串并从db获得所有匹配的数据。
答案 0 :(得分:1)
我用js解决了它。实际上,我没有找到任何好的解决方案,我向幽灵团队询问他们的松散团队,他们建议我用js来解决这个问题。所以这就是我所做的:
Api通话
$.get(
ghost.url.api('posts', { include: 'tags, author' }))
.done(function(data) {
localStorage.setItem('posts', JSON.stringify(data));
})
.fail(function(err) {
console.log(err);
});
将所有数据保存到
localStorage
localStorage.setItem('posts', JSON.stringify(data));
当用户在搜索表单中键入内容时,我会抓取该搜索字符串并过滤与该字符串对应的数据。
// get search results
function getSearchResult(string) {
var postData = JSON.parse(localStorage.getItem('posts'));
var searchResults = postData.posts.filter(function(post) {
return post.markdown.match(string)
|| post.title.match(string)
|| post.author.name.match(string);
});
renderSearchResults(searchResults);
}
然后根据
渲染结果
function renderSearchResults(posts) {
// my render code
}