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

How to create custom ghost api for search

想在 ghost cms 中实现搜索表单。 Visitors/user 必须能够在 post、作者和标签中搜索。 如果可能的话,一些 REST api 查询 ghost db 和 return 像其他 public ghost api 一样的结果。例如api 下面获取所有 post 包括标签和作者。

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

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

我用js解决了。实际上,我没有找到任何好的解决方案,我向他们的 slack 组中的 ghost 团队提出了问题,他们建议我使用 js 解决这个问题。这就是我所做的:

Api call

$.get(
ghost.url.api('posts', { include: 'tags, author' }))
.done(function(data) {
  localStorage.setItem('posts', JSON.stringify(data));
})
.fail(function(err) {
  console.log(err);
});

saved all data to localStorage

localStorage.setItem('posts', JSON.stringify(data));

as user typed something in search form, I grab that search string and filter the data corresponding to that string.

// 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);
}

then render result accordinging

function renderSearchResults(posts) {
  // my render code
}