- 关于next主题中加入博文加密功能的文章,我就是我不一样的烟火。
果想自定义功能样式的往下面看看也许会有点收获,为了避免读者不耐烦的看我的废话,所以移到了下面。
本人博客:mmmmmm.me
效果:
代码:
/blog/themes/next/layout/_layout.swig,找到main标签在吐下代码处添加自定义的swig
_layout.swig:
1 | <div id="pjax-container"> |
新建swig,目录:themes/next/layout/password.swig(和上面的_layout.swig在同级目录,具体路径在上面的include中可以自定义的。)
password.swig:
1 | <script> |
新建一个test.md
test.md
1 | --- |
上面的password后面的值自定义。
注意:
如果自己的博客源码中的这篇文章上传到github,密码也就公诸于世了,可以再push到github的时候将这篇文章忽略。
背景:
预给自己加入文章加密的功能。
思路:
https://www.jianshu.com/p/90c0a15c6f36
1 | <script> |
不用试看看也知道没问题,可是网上说这个容易被破解,因为只是在alert的时候不显示,但是懂编程的人只要打开审查工具就能看到了。pass
http://zhailiange.com/2017/07/06/hexo-encrypt/
hexo-blog-encrypt插件和hexo-encrypt插件,同样尝试过,如果没有pjax肯定是没问题的,因为我加入了pjax在跳转页面的时候有的js会不加载,所以会报错,放弃
自己写
一开始通过网_layout.swig里面引入 script的方式,可是在js文件中是的不到hexo自定义的page变量的(hexo中还有好多变量,比如site,theme等),所以在swig中能够得到这个变量,也就是我们文章中的password,当然你还可以自定义许多变量,比如在config文件中定义是否使用password功能,在文章中增加message(简称就是输入密码上方给用户说的话,或者文章的简单概要等,自定义即可)标签,然后通过js读到本篇文章的message,自定义的添加到页面中展示给用户,等等都可以通过来得到。
当然自己写的初衷就是因为自己的pjax,这下子,终于可以成功的完美融合到pjax中,还学到不少的只是呢。
2018.12.23代码更新
问题一
发现输入密码成功之后,在页面的底部还有请输入密码的组件,在恢复文章的后面加下面三行(已在上面的代码中更新)
1 | $(".description").remove(); |
问题二
因为博客中加入了pjax,在局部刷新的时候,$(document).keyup并没有移除,所以当点击某文章的时候第一次没问题,再不刷新页面的情况下,再次进入,第二次进入的时候是通过pjax进入的,这样就给$(document)绑定了两次keyup事件,第三次的话就会绑定三次,第四次绑定四次,如此往复,出现的现象是前几次报密码错误,最后一次进入正常,调试的时候前几次得到的password的value值都是undifined
解决:
1 | $(document).on('pjax:start', |
在每次pjax发送请求开始就移除事件。
问题三
当输入密码进入页面,按回车键会不断的alert 密码错误
加入判断(上面已经修改)
1 | &&$('.password').length>0 |