惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
WordPress大学
WordPress大学
S
SegmentFault 最新的问题
博客园 - Franky
V
V2EX
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
J
Java Code Geeks
T
The Blog of Author Tim Ferriss
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Jina AI
Jina AI
博客园 - 叶小钗
F
Fortinet All Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
A
About on SuperTechFans
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
D
Docker
博客园 - 【当耐特】
阮一峰的网络日志
阮一峰的网络日志

Example blog

Ghost routing explained with routes.yaml examples — routes, collections & taxonomies Ghost redirects explained with practical redirects.yaml examples How to Serve JSON or XML Data in Ghost How to Change Your Default Post Template in Ghost Ghost Custom Theme Settings How to add Google Fonts to Ghost Themes How to Configure Ghost with Mailgun Ghost Theme Structure & Organization How to Make Custom Templates in Ghost Themes How to Install Ghost CMS via Ghost-CLI How to Add Syntax Highlighting to Ghost The best Ghost CMS hosting platforms Ghost 6.0 — Social Web and Native Ghost Analytics Ghost CMS Social web beta, email 2FA and more author social links How to keep custom design settings when updating your Ghost theme How to use the public preview card in Ghost How to add members-specific sections in Ghost How to customize the default content CTA in Ghost How to build a custom homepage in Ghost An overview of Ghost editor cards and and how they work Ghost CMS News: One-time payments & collecting sales tax How to customize the private site access template in Ghost How to add custom fonts in Ghost themes Ghost CMS News: Additional payment methods & internal linking How to use Code Injection in Ghost How to set meta data of your custom routes & collections in Ghost Ghost CMS News: TK reminders, ActivityPub and improvements How to format dates and use the date helper in Ghost Ghost CMS internationalization, custom fonts & spam protection Understanding and optimizing post and page settings in Ghost CMS
How to Add Search to Ghost Using ghostHunter
Bright Themes · 2020-04-11 · via Example blog

Having search functionality is quite important for a blog or any website with a lot of content. Even though Ghost does not has this feature yet, it's relatively simple to add search to your Ghost blog. In this tutorial I will show you the steps to add search functionality to your Ghost blog using ghostHunter.

First of all make sure the Public API is enabled. For this go to your Ghost Admin panel, and then click Labs and look for Public API, make sure it is checked. From Ghost 1.0 the Public API is enabled by default.

Now, you have to open the ghosthunter javascript source file and save the content of this file in your theme.

For this you should create a new .js file in your theme, for example:

your_theme / assets / js / ghostHunter.js;

After the new file is in the theme assets folder, you should add a reference to it and initialize the plugin in the default.hbs file (at the bottom, before the ending </body> tag) located in the root folder of the theme.

// reference
<script type="text/javascript" src="{{asset 'js/ghostHunter.js'}}"></script>

//Initialize ghostHunter
<script>
  $("#search-field").ghostHunter({
    results   : "#results",
    onKeyUp: true
  });
</script>

You have to create the input for the search as well, depending on where you want the search to appear place the following lines of code:

<form>
  <input id="search-field" />
  <input type="submit" value="search" />
</form>
<section id="results"></section>

The <form> will be the input field, while the <section> with the "results" id will hold the results.

ghostHunter options

ghostHunter comes with a few options, which can be passed when initializing the plugin:

  • results
  • onKeyUp
  • result_template
  • info_template
  • displaySearchInfo
  • zeroResultsInfo
  • includepages
  • subpath
  • onPageLoad
  • before
  • onComplete
  • item_preprocessor
  • indexing_start
  • indexing_end

Let's take a look at the most important options.

Results

This is required and should be set to the id of the DOM object into which search results should be inserted.

results: '#results';

onKeyUp

If you want to have instant search (search as you type), this is the option you need to set to true.

By default this is set to false.

onKeyUp: true;

result_template

This is the default type:

<a class='gh-search-item' href='{{link}}'>
  <p>
    <h2>{{title}}</h2>
    <h4>{{prettyPubDate}}</h4>
  </p>
</a>

If you want a custom template you can create one and pass it to the result_template option when initializing the plugin.

info_template

You can pass a custom Handlebars template if you want to change the default one. The default template looks like this:

<p>Number of posts found: {{amount}}</p>

includepages

If you want to include static pages in the search result you can set this option to true, the default value being false.

Here's an example of ghostHunter initialization with multiple options passed:

$('#search-field').ghostHunter({
  results: '#results',
  onKeyUp: 'true',
  includepages: true,
  onComplete: function (results) {
    if ($('.search-field').prop('value')) {
      $('.my-search-area').show();
      $('.my-display-area').hide();
    } else {
      $('.my-search-area').hide();
      $('.my-display-area').show();
    }
  },
});

For a complete overview of the options you can check ghostHunter readme.

If you modified your theme locally you should save the changes and upload the theme using the Ghost admin panel and the search functionality should work.

If you have any questions, comment below or contact us via mail.