前言
上篇 提到如何設定後端服務。設定好了後,我們要想辦法把功能整合到網誌上。不幸的是 Anisina 主題並沒有提供樣版,只能自行實作。
修改樣版
我們要修改主題內的樣版,先 cd themes/Anisina
。接著我們要添加一些 html
。
1. 添加搜尋按鈕
打開 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
同樣是 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} 亳秒" } } };
|
5. 加上 Algolia Logo
輸入 cd ../../
回到 blog 路徑,下載下面這張圖片,放到 source/imgs/
內
6. 完成!
回到 Blog 上看看,應該已經能使用搜尋功能了。