撰于 阅读 770

写了个Typecho隐藏内容的小插件,评论可见或输入密码可见

Typecho HideContent 插件,隐藏文章中的特定内容,用户评论或者输入密码后才能看到

前言

因为花了亿点点时间,整理了My Little Airport所有的歌和歌词文章里面需要用到评论后可以看到下载链接的功能,在网上找了一圈也没找到功能满意的插件

于是上班摸鱼抽空写了一个小插件。PHP肯定是不会的,以前也没接触过Typecho的相关技术,好在AI足够强大,还是比较顺利的写出来了,开源在了typecho_plugin_HideContent

顺便学习了一点PHP(虽然这个语言工作中完全用不到),再学了一下js的build

功能

基本功能

  1. 两种隐藏方式:通过在文章中插入HTML的<details>块,实现评论后可见、密码可见,可混用多块。

    <details hide-content="comment">
    这里填写内容
    </details>
    <details hide-content="password" data-key="123">
    这里填写内容
    </details>
  2. 编辑器增强:工具栏按钮一键插入模板,选中文本可直接包裹成隐藏块。
    2025-10-29T13:49:44.png
  3. 样式灵活:自带简洁 UI,也支持后台自定义样式覆盖。
  4. 错误提示可配:评论未满足、密码错误的文案/HTML 都能自定义。
    2025-10-29T13:50:19.png

用户体验

  1. 评论成功和输入密码成功自动尝试解锁,不需要刷新网页。
  2. 密码成功本会话缓存,刷新不必重复输入。
  3. 权限直通:管理员/作者自动可见,写作/审核不受影响。
  4. 基础防护:同源校验、简易频率限制、HMAC 校验密文完整性。

技术栈

评论可见(hide-content="comment")

渲染阶段识别隐藏块,生成block_id;如果用户未评论,正文不会输出到页面,仅留下一个“锁定”占位。
前端点击“请评论后查看”或用户评论成功后,触发请求到 action/hide-content。
后端基于用户id或邮箱匹配审核通过的评论记录,通过则返回对应块的明文。

密码可见(hide-content="password" data-key="密码")

渲染阶段后端用文章 ID + block_id + 文章里写的 data-key 派生密钥,把正文加密成 data-encrypted,同时清空页面上的 data-key

用户在页面输入密码后,请求 action/hide-content;后端用相同的派生规则解密校验 MAC 成功后才把明文返回。
附带同源校验 + 简易 IP 限流,降低暴力尝试和跨站滥用风险。

演示

密码在评论可见内容中


已有 49 条评论

  1. hyx

    大善人

    回复
  2. h

    哈哈哈

    回复
    1. 77 回复了 h

      好人一生平安

      回复
  3. nini

    123

    回复
    1. h 回复了 nini

      good

      回复
  4. 谢谢

    回复
  5. mint

    谢谢谢谢Thanks♪(・ω・)ノ

    回复
  6. 康康

    好人!

    回复
  7. 11

    谢谢

    回复
  8. william wang

    xiexie

    回复
  9. ccc

    嗷嗷

    回复
  10. l

    回复
  11. 啊啊啊啊啊

    回复
  12. Sue

    谢谢!

    回复
  13. 嘻嘻

    回复
  14. celi

    谢谢

    回复
  15. 谢谢🙏

    回复
  16. yumi

    好人一生平安!

    回复
  17. pc

    好人一生一窝

    回复
  18. holiday

    谢谢你!

    回复
  19. Chelsea

    谢谢

    回复
  20. 雪儿

    多谢

    回复