Pacman主题下给Hexo增加简历类型

原文 http://blog.zanlabs.com/2015/01/02/add-resume-type-to-hexo-under-pacman-theme/

背景

虽然暂时不找工作,但是想着简历也是个向别人推销自己的好东西。然后也想着折腾点新的东西,如此,这般,便想着研究起写个简历了。
形式不限,但是必须是在线的,最好是很简洁的。

分析

既然是在线的,那就干脆直接用博客呗,直接放在上面。
写博客既然用Markdown,那简历也直接用Markdown,一个是可以在线渲染,另外一个是生成PDF的工具也很多,Github一搜就有好几个不错的。
由于用的主题是Pacman,那就在它的基础上直接改。虽然网页相关基础只是了解一些,但是并不妨碍修改。
先看下最终的效果吧。简历效果。 是不是很简洁,达到了预期的效果。嘿嘿。

实现

hexo的主题是放在themes目录下的。先从Pacman下载Pacman主题。下载完成后参考官方说明设置主题为它。
接着就开始动工了。

既然是简历嘛,那就不希望它出现在首页的列表里面。也就是md文件不要放在/source/_posts文件夹。建一个about的文件夹,放在/source/about里面。
然后新建一个resume.md文件。
注意,这个地方我遇到了一个坑,由于md是自己写的,不是hexo自动生成的,导致date后面那行的”—-“(三个-)没写,然后后面就坑爹了,死活生成不了正常的页面,同时顶部的键值对冒号之间注意要加空格,很多这种坑。
然后一切按照正常的流程走,把简历也写好。

 1 title: Resume  
 2 layout: post  
 3 date: 2015-01-02 23:23:59
 4 ---
 5 # 王小二(wangxiaoer#gmail.com)
 6 ##个人信息
 7  - 本科/XXX大学(20XX.9-20XX.7)/计算机科学与技术
 8  - 工作年限:2年
 9  - 技术博客:http://xxxxx.com
10  - 地点:北京
11 ##工作经历
12 ###五道口宇宙中心
13 ####XXXX项目(2013.10-至今)
14  - XXXXXXXXXXXXXXXXX
15  - XXXXXXXXXXXXXXXXXX
16  - XXXXXXX
17  - XXXXXXXXXXXXXXXXXXXXXX
18 ##技能列表
19 熟悉:Android/Java
20 了解:C#/WP,Python,HTML, Markdown等
View Code

现在看起来跟Pacman主题下任何普通的博文样式一样。
现在怎么去掉首部,以及尾部,以及侧边栏等等一切不要的东西,不要捉急,慢慢来,一个一个砍,一步一步实现咱们想要的效果。
看到md首部有个layout属性,是不是可以从这里开刀呢?
再联想到Pacman配置搜索页面需要设置layout属性为search。OK,就以search为关键词在pacman中搜索,然后在/pacman/layout/layout.ejs里面找到了它。这种关键词查找突破法在很多地方可以用到。之前研究别人APK实现原理的时候就经常用,屡试不爽,下次写文章讲解APK的逆向研究。
OK,找到了。发现里面大致的一段代码如下:

 1 <% } else if(page.layout=='search'){ %>
 2  <%- partial('_partial/head') %>
 3     <body>
 4       <header>
 5         <%- partial('_partial/header') %>
 6       </header>
 7       <div id="container">
 8         <%- partial('_partial/search')%>
 9       </div>
10       <%- partial('_partial/after_footer') %>
11     </body>
12    </html>
View Code

想起之前学习php时也会有这种混用,html代码与php代码混在在一起,这里应该也是差不多的。暂时先这样认为,当然后续也证实了这是没错的。
既然pacman可以自定义search属性,那咱们也可以自定义一个resume属性。 那里面要放什么内容呢? 跟search节点一样?
然后查看hexo主题属性layout相关的文档http://hexo.io/docs/themes.html,里面说一个布局必须包含”<%- body %> “才能显示内容。
常用的是layout值是post或者page,先看下page果然有”<%- body %> “,那就考虑直接复制过来,用了再说。post与page的区别通过测试可以发现post右边有Sidebar,样式也有一定区别。鉴于实际情况,此处使用page的内容。
改好之后就直接运行看效果了,尼玛,背景是灰色的啊,不能忍啊,太tm难看了。page类型的就是白色的,然后使用Chrome审查元素,看到内容的class id为resume,page的为page,应该跟这个有关系,然后搜索,找到了/pacman/source/css/_partial/article.styl。第一行加上,.resume,一切搞定。
接着就是怎么搞定首部和尾部了。看到layout文件里里面有个page.ejs文件,先拷贝一份为resume.ejs(处理页面数据),/_partial文件夹里面的也类似(这个用来处理往首页列表加摘要)。这个文件里面使用到的/_partial/post/article.ejs也拷贝一份为resume.js。修改/layout/resume.ejs文件里面的指向。
由于不需要评论以及尾部,删除/_partial/post/article.ejs底部的一些数据,最终代码如下:

 1 <div id="main" class="<%= item.layout %>" itemscope itemprop="blogPost">
 2   <article itemprop="articleBody">
 3     <%- partial('header') %>
 4   <div class="article-content">
 5     <%- partial('gallery') %>
 6     <% if( table&&(item.toc !== false) && theme.toc.article){ %>
 7     <div id="toc" class="toc-article">
 8       <strong class="toc-title"><%= __('contents') %></strong>
 9     <%- toc(item.content) %>
10     </div>
11     <% } %>
12     <%- item.content %>
13   </div>
14   </article>
15 </div>
View Code

然后回到/_partial/post/article.ejs里面的resume分支,之前复制的是page代码,我们需要删掉一些数据,考虑只留下”<%- body %> “,运行一下,卧槽,怎么会有乱码。应该是头部有编码信息,要考虑保留,尾部由于也有统计信息,也要考虑保留,最后经过不断的”删除->查看效果->复原”,确定删除的部分,最终保留代码如下:

 1 <% } else if(page.layout=='resume'){ %>
 2   <% if(page.source.match(/\.md$/)){ %>
 3    <%- partial('_partial/head') %>
 4      <body>
 5        <div id="container">
 6          <%- body %>
 7        </div>
 8       <div id="footer"><br/></div>
 9        <%- partial('_partial/after_footer') %>
10      </body>
11     </html>
12     <% }else{ %>
13    <%- page.content %>
14  <% } %>
15 <% } else if(page.layout=='page'){ %>
View Code

最后运行一下,就是之前的效果了。Perfect!
最后编写简历时把layout设置为resume就可以了。同时,最好不要把简历的md放在_posts目录下,如果放在里面,在首页列表里面会包含有它,而且样式有一定问题。/about/resume.md最后生成的路径是 http://yourwebsite/about/resume.html ,然后在首页的顶部导航栏增加这个路径就可以了。

总结

不仅仅可以增加resume属性,也可以增加其他的来扩展更多的自定义页面,比如404页面。
花了一晚上时间研究,虽然在—-三个-处耽误了不少时间,还是蛮有趣的。
有任何问题欢迎向我反馈。
源码我已经放在Github(https://github.com/waylife/pacman_with_resume)上了,欢迎star以及fork。

转载于:https://www.cnblogs.com/waylife/p/add-resume-type-to-hexo-under-pacman-theme.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420336.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

屏幕输出语句_C语言快速入门——表达式与语句

表达式表达式是由运算符和操作数组合构造成。最简单的表达式是一个单独的操作数&#xff0c;以此作为基础&#xff0c;结合语言自身支持的操作符&#xff0c;就可以建立复杂的表达式。下面是一些表达式&#xff1a;从这里可以看到&#xff0c;操作数可以是数据常量(4&#xff0…

前端学习(1325):await关键字

async function p1() {return p1; } async function p2() {return p2; } async function p3() {return p3; } async function run() {let r1 await p1();let r2 await p2();let r3 await p3();console.log(r1);console.log(r2);console.log(r3);} run(); 运行结果

接口测试客户端的搭建

一. 引言 随着公司项目整体架构由原来的多渠道各自为战&#xff0c;向着建立统一的服务端应用&#xff0c;从而为各渠道提供服务调用的转变&#xff0c;服务端应用接口测试成了我们日常工作中的重要任务之一。经过半年的摸索和项目实战&#xff0c;我们已经掌握了一套接口测试的…

前端学习(1327):node全局对象global

global.console.log(我是歌谣); global.setTimeout(function() {console.log(123); }, 2000) 运行结果

C#秘密武器之反射——基础篇

先来一段有用的反射代码 namespace Calculator { public interface Iwel { String Print(); } } namespace Calculator { public class Arithmetic:Iwel { /// <summary> /// 没有带参数的构造函数 /// </summary> public Arithmetic() {} public Arithmetic(i…

Python3 etree, requests库抓取bt

bt种子抓取1. 抓取你想要的数据2. 爬取bt种子3. 抓取磁力链迷上了追番.. . bt种子xunlei来解决。 推荐一个网站https://mikanani.me。可以搜索你想要的动漫… 以bt的形式下载&#xff0c;或者复制磁力链。 1. 抓取你想要的数据 需要了解requests, etree库&#xff0c;etree用…

unity2018关联不到vs_现实VS真爱:远嫁的幸福和悲哀

陆拾一 LUSHIYI《现实VS真爱&#xff1a;远嫁的幸福和悲哀》Part.1你有过远嫁的犹豫或者经历吗&#xff1f;关于这个话题&#xff0c;我从未写过。今天借着一封读者的来信&#xff0c;与大家聊一聊。拾一&#xff0c;你好。我跟男朋友在一起两年了&#xff0c;现在到了谈婚论嫁…

前端学习(1331):mongoose第三方模块

const mongoose require(mongoose); mongoose.connect(mongodb://localhost/playground, { useUnifiedTopology: true }).then(() > console.log(数据库连接成功)).catch(err > console.log(err, 数据库连接失败)) 运行结果

ikbc机械键盘打字出现重复_双十一机械键盘优惠清单,阿米洛/ikbc/吉利鸭/杜咖/美商海盗船/雷神/Filco机械键盘推荐...

这次为大家带来的是一篇双十一机械键盘的优惠汇总清单&#xff0c;其中杜咖的优惠力度较大&#xff0c;高斯的性价比很高&#xff0c;然后阿米洛则推出了好几款双十一限定款&#xff0c;我们一起来看看吧~TOP1、罗技&#xff08;Logitech&#xff09;K835原价&#xff1a;369元…

前端学习(1333):mongodb增

const mongoose require(mongoose); mongoose.connect(mongodb://localhost/playground, { useUnifiedTopology: true }).then(() > console.log(数据库连接成功)).catch(err > console.log(err, 数据库连接失败))//创建集合规则 const courseSchema new mongoose.Sche…

前端学习(1332):mongodb安装

一、安装 双击安装文件&#xff0c;然后安装指引点击下一步 ​​ 选择【Custom】安装类型 ​​ 将程序安装到D盘MongoDB目录下&#xff08;如果切换了目录&#xff0c;记得对应调整monggo.bat下面的路径&#xff09; ​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​…

华为手机什么时候更新鸿蒙系统_华为鸿蒙系统什么时候能超过iOS、安卓?任正非表态了...

众所周知&#xff0c;自从去年8月份华为高调发布了鸿蒙系统之后&#xff0c;网友们每时每刻都在盼望着鸿蒙系统能够取代安卓&#xff0c;成为华为手机使用的操作系统。甚至还有人觉得以华为的能力&#xff0c;鸿蒙一出&#xff0c;能够迅速超过苹果的iOS和安卓系统。可惜原来余…

前端学习(1334):mongodb增2

const mongoose require(mongoose); mongoose.connect(mongodb://localhost/playground, { useUnifiedTopology: true }).then(() > console.log(数据库连接成功)).catch(err > console.log(err, 数据库连接失败))//创建集合规则 const courseSchema new mongoose.Sche…

ChemBioDraw 制作DMT屏保

&#xff5b;关于DMT&#xff5d;二甲基色胺&#xff08;DMT&#xff09; dimethyltryptamine 第一类精神药品&#xff0c;色胺类致幻剂&#xff0c;药性强。不仅存在于植物中&#xff0c;还以痕量见于人体中&#xff0c; 由色胺-N-转甲基酶催化产生&#xff0c;但具体功能不明…

前端学习(1335):mongoDB导入数据

mongoimport --d playground --c users --file ./user.json 运行结果

属性被分为八大类不包括_家庭软装八大类有哪些 软装八大类风格有什么特点...

软装就是西方基本装修的硬装完工之后&#xff0c;放置的一些家具以及装饰用品&#xff0c;那么在家装中软装八大类有哪些呢?下面就和郑州装修网小编一起来了解下吧。软装八大类有哪些软装八大类指的是&#xff1a;家具、灯具、布艺、花艺、地毯、工艺品、墙饰以及床品。 1、家…

前端学习(1336):从数据库查询文档

const mongoose require(mongoose); mongoose.connect(mongodb://localhost/playground, { useUnifiedTopology: true }).then(() > console.log(数据库连接成功)).catch(err > console.log(err, 数据库连接失败))//创建集合规则 const courseSchema new mongoose.Sche…