本站主题加入全站pjax,进入加密文章多少存在点bug,于是找到这个插件,很好用。

插件原作者:
GitHub 项目地址:
原版插件本站镜像下载:

当前版本支持自定义加密块的样式,以及配置加密块上的提示文本。详细内容请参考 原作者插件中README.md,在此不再赘述。

插件功能

Typecho 文章部分加密插件(PartiallyPassword)支持对某一篇文章的特定部分创建密码,访客需要正确输入密码才能查看内容。

原生 Typecho 文章加密功能仅支持加密整篇文章,设置密码后该篇文章包括标题全部对未正确输入密码的访客不可见,这在有时并不能满足我们更加细致的要求。很可能一篇文章中有部分文字我们仅希望『获得许可的个人或群体』查看,而另一部分则希望『所有人』都可见;又或者,我们需要对这个加密内容添加一个注释信息或说明文本,而不想完全隐藏这段思想。这时,使用 PartiallyPassword 即可轻松解决问题。

来个栗子?本站对插件式样进行调整,你也可以根据说明进行修改😜

  •  加密区(1)
  • 密码:alttt.com
  • 开发笔记

    最初的版本(v1.0.0)是挂钩了 Widget_Abstract_Contents 中的 contentEx,算是妥协的方案。这个钩子在内容被解析后触发,也就是如果有什么旁路直接拿 text,我是拦不掉的,加密的内容会吐出来,不严谨,心里一直很不舒服,也在寻求解决方案。这一版本的默认样式也极难看,是本着能用就行的策略随意设置的,对密码输入的处理也极不协调,是在前端写入 Cookie 并刷新页面。唯一的优点是可以 PJAX 无刷新加载。

    之后很快更新了 v1.1.1 版本,新增挂钩了 Widget_Abstract_Contents 中的 excerpt,在摘要中做一些处理。同时优化了默认样式,仔细想想极简风格不仅好写而且好看。

    然后 v1.x 时代就结束了,v2.0.0 版本全面优化了整个流程,包括加密块的处理和密码提交的逻辑,前者交给了 Widget_Abstract_Contentsfilter 钩子,后者在 Widget_Abstract_Contents 中的 singleHandle 中进行,前端把密码 POST 上来,在后端走验证。filter 钩子是大杀器,text 在从数据库中取出来后立即经过 filter 处理,在这里搞定替换可以几乎完全避免加密内容意外泄露,唯一的不确定性只有当第三方插件也挂钩 filter 时,这个处理顺序问题……猜测是根据插件启用的先后顺序确定的,没有进行验证。自这个版本起,默认样式放弃了对 PJAX 的直接支持,换来的是更好的可移植性(在 Typecho 默认主题上可以直接使用),但是你仍然可以开动脑筋根据自己的主题情况自定义代码,实现 PJAX。

    寒夜方舟向我提了 issue,称在后台编辑时,加密块保存后自动消失,吓得我心肺停止慌忙 fix。这时注意到后台取 text 也要走 filter,我直接给换掉了那么后台也看不见,保存后还能喜提数据丢失……遂 fix 该重大 bug,发布 v2.0.1 版本。通过 __TYPECHO_ADMIN__ 常量判断了一下前后端,照着 Typecho 的样子做了一点权限控制。

    关于之后的开发工作,大方向是搞一个不同密码对应不同内容的新玩法,目前开发工作已全面暂停(咕)

    文章目录