如何为搜索创建自定义ghost api

时间:2016-04-06 11:53:37

标签: content-management-system ghost-blog ghost

想在ghost cms中实现搜索表单。 访客/用户必须能够搜索帖子,作者和标签。 如果可能的话,一些REST api会查询到ghost db并返回像其他公共ghost apis那样的dersired结果。例如api下面的所有帖子包括标签和作者。

ghost.url.api('posts', 'slug', mySlugVariable, {include: 'tags, author'});

所以,我想要这样的东西,我可以传递一些字符串并从db获得所有匹配的数据。

1 个答案:

答案 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
}