typecho实现非管理员用户设置文章密码

本文阅读 4 分钟
广告

博客之前开放了会员中心,并且还实现了用户的投稿操作,但是作为普通的贡献者权限,确实很多的高级设置都无法使用,以及typecho本身的文章加密功能有点简陋,一设置就完全隐藏了,包括标题内容,就连简介都获取不到。所以我需要解决两个问题,一个是普通的投稿用户也可以设置文章的密码,一个是在文章加密的前提下,基本的用于提交搜索引擎的收录仍然可以显示。
经过一番操作,也实现了,或者说在思路层面是没有问题的,只是有些细节,比如rss订阅里面,无法隐藏到,所以最后出来一个半成品,但是仍然有借鉴的价值。
注意,我的实现没有修改typecho的内核,因为我一直认为,修改功能就要改程序内核对以后的升级会影响,其次就是这样做感觉没有模板开发的灵魂。

实现过程如下:

1.在模板function.php底部找到themeFields方法,在其中增加新的字段

function themeFields($layout) {
    $Ar_Pword= new Typecho_Widget_Helper_Form_Element_Text('Ar_Pword', NULL, NULL, _t('文章阅读密码'), _t('设置后文章将关闭显示,需要输入密码才可以阅读,允许中文,数字,英文字母'));
    $layout->addItem($Ar_Pword);
}

创建和管理文章的时候,很快就出现了新的字段定义。
Snap.jpg
问题来了,该怎么根据这个字段加密文章呢?
其实不是很难,我的思路就是,首先判断字段是否为空,如果不为空就默认为投稿者设置了密码,并且在模板中进行判断,隐藏掉真正的内容。然后,判断不为空的时候,设置一个提交表单,以post方式提交给当前页面,定义一个php字段负责接收提交的参数,如果参数值等于自定义字段值,文章内容则显示出来,如果不相等就提示新的信息,然后继续显示密码提交表单。

2.模板页面写法,主要在post.php文章模板文件。

<?php $ar_pword=""; ?>
<?php if(isset($_POST['ar_pword'])){ ?>
    <?php $ar_pword = $_POST['ar_pword']; ?>
    <?php if($this->fields->Ar_Pword == $ar_pword){ ?>
        <?php $this->content(); ?>
    <?php }else{ ?>
        <p>密码错误,请重新输入</p>
        <form action="" method="post">
            <input type="text" name="ar_pword"/>
            <input type="submit" name="submit" value="提交"/>
        </form>
    <?php } ?>
<?php }else{ ?>
    <?php if($this->fields->Ar_Pword == ""){ ?>
        <?php $this->content(); ?>
    <?php }else{ ?>
        <p>作者给文章设置了密码哦!输入正确的口令才可以阅读</p>
        <form action="" method="post">
            <input type="text" name="ar_pword"/>
            <input type="submit" name="submit" value="提交"/>
        </form>
    <?php } ?>
<?php } ?>

ar_pword默认为空,当用户提交的表单就立刻获取ar_pword参数值并与自定义字段Ar_Pword 比对,反之显示密码表单,同时在比对发现不相同的时候,继续显示表单。上面是代码的简化版,我的博客已经美化了一下,最终的效果是这样的。
Snap2.jpg
Snap3.jpg
所以,我最后似乎也知道一些所谓的文章收费插件,或者去微信公众号获取验证码是怎么做的了,可能只需要自动生成密码,或者就是不生成,单纯自己定义就好。不过更进一步的玩法,还是以后再说吧。
【规则之树版权所有,转载注明来源】

本文来自投稿,不代表本站立场,如若转载,请注明出处:https://www.ruletree.club/archives/1099/
typecho实现QQ卡片链接,教程案例
« 上一篇 03-12
科幻故事,《它来了!》
下一篇 » 03-15
广告

发表评论

成为第一个评论的人

作者信息

热门文章

标签TAG

热评文章