《Hexo: 从零开始编写自己的主题》

1. Hexo概述以及Hexo工作原理
2. 入门Hexo主题编写
3. 优化样式,设计自己的主题
4. fancybox优化图片展示效果、代码高亮以及数学公式
5. 添加本地搜索功能以及发布博客让官网接收

5. 添加本地搜索功能以及发布博客让官网接收

经过这些时间的折腾,逐步完善主题的各个功能,现在已经提交到 hexo 官网,请前去查看 https://hexo.io/themes/ 并搜索 heyan

5.1 添加本地搜索的功能

本地搜索是指搜索范围局限于自己的所有博客,而不是第三方的搜索引擎比如百度谷歌等。

比如,


这个功能的实现需要依赖于第三方库,具体地址为:https://github.com/wzpan/hexo-generator-search。

首先安装依赖,

$ npm install hexo-generator-search --save

接着修改hexo的 _config.yml 配置文件,在后面添加:

search:path: search.xmlfield: postcontent: truetemplate: themes/heyan/search.xml

最后需要导入搜索的模板文件 search.xml 文件到主题文件中,这个文件可以去 https://github.com/wzpan/hexo-generator-search 下载,也可以在刚刚安装的依赖包中找到,具体地址为 node_modules/hexo-generator-search/demo_output/search.xml

复制粘贴后的结果是这样子的:


然后需要在主题的 source/js/ 目录下添加一个 search.js 文件,复制粘贴的内容参考https://github.com/wzpan/hexo-theme-freemind/blob/master/source/js/search.js。

在 header.ejs / layout.ejs 文件中添加引用这个 js 文件,

<%- js('js/search.js') %> <script type="text/javascript">var search_path = "<%= config.search.path %>";if (search_path.length == 0) {search_path = "search.xml";}var path = "<%= config.root %>" + search_path;searchFunc(path, 'local-search-input', 'local-search-result');</script>

最后配置以下搜索输入框,指定搜索输入框的 id

<form class="d-flex"><button class="btn text-muted fa fa-search" disabled></button><input id="local-search-input" class="form-control me-2 pe-4" type="search"placeholder="<%- theme.search.placeholder%> " aria-label="Search">
</form>

并且指定搜索结果的输出位置,我把搜索结果输出到 body 前面。

layout.ejs 中,在 <%- body %> 前面添加搜索结果框,指定 id。

<div class="col-md-8"><div class="markdown-section"><!-- 搜索结果 --><div id="local-search-result"></div><%- body %> </div>
</div>

不要改 id ,使用search.js 默认的,节省一些不必要的麻烦。大功告成,但是需要自己一步一步测试,多次 log 查看哪个步骤能够正确跑通。

5.2 提交主题到官网收录

5.2.1 提交方法

hexo.io 官网的源码地址是:https://github.com/hexojs/site 为了提交自己的主题,需要更新这个源码,但是很明显我们没有权限直接修改。所以

  1. Fork https://github.com/hexojs/site 到自己的仓库。

  2. 修改 Fork 过来的 site ,编辑其中的 source/_data/themes.yml 文件 ,在后面添加自己的主题信息:

    - name: heyandescription: A simple but elegant Hexo theme.link: https://github.com/smile-yan/hexo-theme-heyanpreview: https://smileyan.cn/heyan/tags:- 中文- English- simple- elegant- highlight- mathjax- local-search
    
  3. 添加主题截图到 source/themes/screenshots,注意这个主题截图必须是 800x500 的 png 图片。并且图片的名字与自己主题的名字一样。一般为了表示自己的主题优秀会有几个截图拼凑起来,我是使用PPT做的,然后截个图。

    这个猫咪照片是百度上找的,主要目的也是为了吸引别人注意。

  4. git add/commit/push 到自己fork的仓库中,然后提交 pull request。可以理解为合并的请求,提交以后会进入一个自动的审核过程,并且也有提示自己需要关注的问题。

  5. 等待有权限的 hexo-site 管理人员看到,然后进行合并操作。可能需要一些时间(我总共等待不超过两天)。

最后就可以在 hexo 主题网站上搜索自己的主题名字,看看是否能查到了。

总结

开发一个这样的主题有什么作用呢?关于这个问题我想了很久。首先这个肯定不能给我带来收益,最大的愿望就是能收获几个点赞,虽然这也不能转换成收益,但是这是他人对自己劳动成果的一种肯定,是值得开心的。

另外还有一个重要原因大概是,我从 hexo 中获益过,我使用过它们的某些主题,虽然也没有多少浏览,没有任何收益。但是我确确实实在使用这个主题的过程中有很多收获,有不少学习提升。

所以我愿意花时间读官方文档,读其他主题源码,并自己动手写一个。尽管我不是一个搞前端开发的。

希望这些笔记能够帮助到其他人,能够有更多优秀的主题陆陆续续公开。

如果有任何问题,都可以到我的主题源码仓库提出 issue,感谢大家的支持!https://github.com/smile-yan/hexo-theme-heyan

Smileyan
2022.4.23 20:58

《Hexo: 从零开始编写自己的主题》5. 添加本地搜索功能以及发布博客让官网接收相关推荐

  1. 《Hexo: 从零开始编写自己的主题》3. 优化样式,设计自己的主题

    <Hexo: 从零开始编写自己的主题> 1. Hexo概述以及Hexo工作原理 2. 入门Hexo主题编写 3. 优化样式,设计自己的主题 4. fancybox优化图片展示效果.代码高亮 ...

  2. 《Hexo: 从零开始编写自己的主题》1. Hexo概述以及Hexo工作原理

    <Hexo: 从零开始编写自己的主题> 1. Hexo概述以及Hexo工作原理 2. 入门Hexo主题编写 3. 优化样式,设计自己的主题 4. fancybox优化图片展示效果.代码高亮 ...

  3. 《Hexo: 从零开始编写自己的主题》4. fancybox优化图片展示效果、代码高亮以及数学公式

    <Hexo: 从零开始编写自己的主题> 1. Hexo概述以及Hexo工作原理 2. 入门Hexo主题编写 3. 优化样式,设计自己的主题 4. fancybox优化图片展示效果.代码高亮 ...

  4. Hexo Next 主题中添加本地搜索功能

    在 next 主题侧边列表有一个 搜索 菜单,但是点击之后页面会处于卡死状态,后台显示是 404,需要添加搜索插件才可以. 1.安装本地搜索插件 hexo-generator-search # 安装插 ...

  5. 为 hexo 博客添加本地搜索功能

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:我的大学到研究生自学 Java 之路,过程艰辛,不放弃,保持热情,最终发现我是这样拿到大厂 offer 的!个人 ...

  6. hexo博客添加本地搜索功能

    写在前面 本文主要描述了怎么添加hexo博客搜索插件,然后启动搜索功能,对两个本地搜索插件的使用进行了描述,文章可能还有很多不足,请大家谅解,欢迎大佬提意见. 本文用的东西 hexo 3.1.0 wi ...

  7. Hexo主题之livemylife个性化构建你的博客

    本篇博客已首发在个人博客 [快乐码原] :Hexo主题之livemylife个性化构建你的博客 欢迎各位客官来康康~ tips:部分图片加载异常,可以到我的个人博客浏览完整版. 简介 livemyli ...

  8. Hexo 发布博客实现图文并茂

    title: Hexo 发布博客实现图文并茂 date: 2018-07-20 14:11:57 tags: Hexo Bmob Typora categories: 搭建个人博客 写在前面 ​ 网站 ...

  9. hexo 菜单_Hexo 搭建个人博客教程 - 6 - 设置菜单,发布博客 - 2018

    设置menu 位置:~\themes\next下的_config.yml文件,我的在D:\hexo\hexo\themes\next 去掉about和categories的注释menu: home:  ...

最新文章

  1. 算法岗面经整理!查漏补缺
  2. iOS用户设计指南 - 平台特征
  3. OVS vxlan(二十八)
  4. [hdu3966 Aragorn's Story]树链剖分
  5. 开辟经济发展的第二战场
  6. 知识点实用梳理:点对点协议(PPP)、广播信道多址访问、SMTP与POP3、RS232C、协议与端口号
  7. 百度SEO站群404二次元时间倒计时页面源码
  8. python经典程序实例-Python3经典100例(①)
  9. 拓端tecdat|R语言ggsurvplot绘制生存曲线报错 : object of type ‘symbol‘ is not subsettable
  10. Apache与Nginx服务器对比
  11. JAVA下载安装教程(Java SE Development Kit 8u40)
  12. mysql超市管理系统怎么写_求php+mysql的小型超市管理系统
  13. VM虚拟机安装及安装Windows系统
  14. 【leetcode-字符串】:重复的子字符串(是否由它的一个子串重复多次构成)
  15. 初识搜索引擎_搜索相关参数梳理以及bouncing results问题解决方案
  16. CAUSE: The chosen installation conflicted with software already installed in the given Oracle home.
  17. 2018n年全国计算机考试,2018ncre全国计算机等级考试报名系统
  18. python tk下拉列表_Python 窗体(tkinter)下拉列表框(Combobox)实例
  19. 【翻译】用 安全即代码 保护你的GitOps流程
  20. 微信分享会根据分享的不同,为原始链接拼接如下参数

热门文章

  1. “电氢并行” 新能源汽车催热综合能源补给站
  2. 计算机二级 office —— Excel(1)
  3. 消费升级背景下零食行业发展报告_零食行业进入4.0时代
  4. opengl作业三维虚拟场景_乱弹OpenGL选择-拾取机制
  5. 基于java的留言板系统
  6. 计算机图形学基础(第二版)陆枫 何云峰(1)
  7. Unable to start docker Container from docker-compose “unknown flag: iidfile”
  8. 第 4 章 jQuery
  9. 江苏省高等学校计算机一级考试操作题教程,江苏省计算机一级考试操作题注意要点...
  10. (完整版)【考研】民俗学概论(笔记)—钟