hexo 上實現搜尋功能(下)

作者 狼 | 日期 2017-08-18 |
hexo 上實現搜尋功能(下)

前言

上篇 提到如何設定後端服務。設定好了後,我們要想辦法把功能整合到網誌上。不幸的是 Anisina 主題並沒有提供樣版,只能自行實作。

修改樣版

我們要修改主題內的樣版,先 cd themes/Anisina。接著我們要添加一些 html

1. 添加搜尋按鈕

nav
打開 layout/_partial/nav.ejs,在 ul 標籤內加上

  <ul class="nav navbar-nav navbar-right">
    ...
    ...
+ <% if (config.algolia){ %>
+   <li>
+     <a href="#search" class="popup-trigger">
+       <i class="fa fa-search"></i>
+     </a>
+    </li>
+ <% } %>
  </ul>

2. 添加搜尋彈出式 Modal

search_modal

同樣是 layout/_partial/nav.ejs,在最下方加上:

<% if (config.algolia){ %>
  <div class="site-search">
    <div class="algolia-popup popup">
      <div class="algolia-search">
        <div class="algolia-search-input-icon">
          <i class="fa fa-search"></i>
        </div>
        <div class="algolia-search-input" id="algolia-search-input"></div>
      </div>
      <div class="algolia-results">
        <div id="algolia-stats"></div>
        <div id="algolia-hits"></div>
        <div id="algolia-pagination" class="algolia-pagination"></div>
      </div>
      <span class="popup-btn-close">
        <i class="fa fa-times-circle"></i>
      </span>
    </div>
  </div>
<% } %>

3. 添加相關 js, css 檔

下載下面的 js, css 檔,分別放到 source/js/ 以及 source/css/
instantsearch.min.js
algolia.js
algolia.css

並打開 layout/_partial/head.ejs,在 head 標籤內加上:

   <head>
     ...
     ...
+  <% if (config.algolia){ %>
+    <%- css('css/algolia') %>
+    <%- js('js/algolia') %>
+    <%- js('js/instantsearch.min') %>
+  <% } %>
   </head>

css 內已經幫你處理好一些被 bootstrap 影響的樣式,以及加上 highlight 效果。
js 內也已經幫你修好一些 BUG,並加上 debounce ,避免每打一個字就發一次請求。

4. 加上 API Keys

編輯 algolia.js,填上你自己的 key

  var CONFIG ={
-   root: '/some_root/',
+   root: '/your_root/', // 跟你 _config.yml 內的 root 設定要一樣。
    algolia:{
-      applicationID: 'XXXXXX',
-      apiKey: 'YYYYYYYYYYY',
-      indexName: 'ZZZZZZ',
+      applicationID: 'YDG1C4ASA4',
+      apiKey: 'eecdd0f2174b77269d964813a61812bc',
+      indexName: 'khiav-hexo-blog',
      hits:{ per_page: 10 },
      labels:{ "input_placeholder": "輸入搜尋內容", "hits_empty": "找不到「${query}」", "hits_stats": "找到 ${hits} 條相關條目,花費 ${time} 亳秒" }
    }
  };

輸入 cd ../../ 回到 blog 路徑,下載下面這張圖片,放到 source/imgs/
algolia_logo

6. 完成!

回到 Blog 上看看,應該已經能使用搜尋功能了。