有时候想发布不公开文章,或者不想被蜘蛛抓取页面,又或者只是想私底下分享,这时候文章就可以设置个密码来控制访问权限,那么对于开源博客系统 Typecho 能不能设置密码保护,又要如何设置呢?
细心的你已经发现,本文已经使用了密码保护,此功能在 Typecho 中原生支持,不需要插件就可以实现,下面聊聊设置密码保护的方法。
根据 Typecho wiki 原文:
在数据库设计的 contents 表中,我们约定了一个密码保护字段 password,此字段由作者自行设置。并在数据库中明文存储,方便作者修改和查询。一旦一则内容设置了此密码,他的内容将受到保护不会直接输出给第三方,只有在满足特定要求时才会输出。
因此,在文章发表后,通过修改 contents 表中该文章的 password 字段的值,即可实现密码访问:
当然了,我们不会直接去改数据库,写文章页面右侧就可以设置了:
效果:
当然了,这里的截图已经是被我修改过样式后的显示效果,要自定义提示文本,可以修改博客源码中的 var/Widget/Abstract/Contents.php
文件,1.1 版本大概在 739 行左右,参见下图:
其中注释掉的三行:
//$value['title'] = _t('此内容被密码保护');
//$value['tags'] = array();
//$value['commentsNum'] = 0;
如果取消注释,则 文章标题会替换为 “此内容被密码保护”、文章标签会替换为 “none”、评论数置为 0。
既然知道了在这里控制密码访问,那么我们就可以在这里根据自己的需要自由发挥了,比如我加了个 class 居中:
<p class="easyPieChart">...
需要特别提醒的是, 在 nginx/apache 中不要自定义 403 错误页 ,因为 nginx/apache 自定义错误页优先于 typecho,一旦设置就不会出现输密码的页面,而是显示 403 错误页了。
PS:水了这么多,其实要说的就是最后一段话~~~
参考文章:
1.《Typecho文章密码保护显示标题方法》
Windows 10Chrome 66.0.3359.117来自 江苏 的大神
我的博客本身的密码访问都是404不知道什么原因
不要在 Nginx 或 Apache 等配置 404/403 错误页,否则会优先
Mac OS X 10_14_0Chrome 69.0.3497.100来自 云南 的大神
最后一段话满满的干货,整个google 你最牛,就你这篇解决问题。
哈哈哈,也是我踩过的坑
Windows 7Chrome 63.0.3239.132来自 江苏 的大神
博主大大,我现在用的一个typecho主题,当把一篇文章加上密码后,在谷歌浏览器里会所有页面都报403,页面可以访问,但是控制台显示页面403,我换了一个主题后,只有加密的文章会显示403,其余页面正常,我想问下这是什么原因,应该是主题导致的,是需要修改什么吗?还有贵博客的文章点击后显示弹窗大图是用的什么插件吗,还是JS写的
这是开启了 Pjax 的缘故,Pjax 只会刷新页身内容,console 内容不会清空。插件是 fancybox。
Windows 10Chrome 72.0.3626.109来自 河北 的大神
博主请问一下,设置密码的文章会被谷歌自动收录吗?
不会,设置密码的文章会返回 403,不过像本站回复可见功能也可以实现这个要求,而且不影响收录