迅睿cms如何设置文章阅读密码?
二开需求描述
做个内容页判定密码访问,用户访问内容详情时,需要输入指定的密码才能正常浏览相关的详情内容。
需求开发思路
这个访问密码需要自定义一个模块字段,发表内容时,将阅读密码填写在该字段中。前端在调用时,做一个字段判断,如果该字段有内容,则表示是加密状态,需要输入正确密码才能浏览,输入密码验证的操作,可以用表单来接收相关数据;如果该字段没有内容,则表示无加密状态,可以公开浏览。
二开操作步骤
1、新建一个模块字段(笔者以news模块为例),如下图所示。
2、发布内容时,填写阅读密码,如下图所示。
3、在news模块中新建一个密码验证控制器的php文件
路径为/dayrui/App/News/Controllers,在该文件夹内新建一个名为Ydpw.php的文件,将下方代码复制进文件内。
<?php namespace Phpcmf\Controllers; class Ydpw extends \Phpcmf\Common { public function index() { $id = (int)$_GET['id']; $pwd = trim($_GET['pwd']); $this->_module_init(); $data = $this->content_model->get_data($id); if (!$data) { $this->_json(0, dr_lang('%s内容(#%s)不存在', $this->module['name'], $id)); } if($pwd==''){ $this->_json(0, '请填写阅读密码!'); }elseif ($pwd!=$data['ydpw']) { $this->_json(0, '阅读密码不正确!'); } $this->_json(1, html_entity_decode($data['content'])); } }
4、在news模块的show.html页面中加入密码验证框,代码如下所示。(样式可以自己根据实际情况自行调整)
{if $ydpw} <div class="input-group" id="ydpw_form"> <input type="text" id="qy_ydpw" value="" class="form-control"> <span class="input-group-btn"><a class="btn red" href="javascript:qy_ydpw();">验证密码</a></span> </div> <div id="content"></div> <script> function qy_ydpw() { $.get("{dr_url_prefix('index.php')}?is_ajax=1&s={MOD_DIR}&c=ydpw&id={$id}&pwd="+$("#qy_ydpw").val(), function(data){ if (data.code) { $('#content').html(data.msg); $("#ydpw_form").hide(); } else { dr_cmf_tips(0, data.msg); } }, 'json'); } </script> {else} {$content} {/if}
“