绝大部分的网站都有浏览量和点赞功能,通过浏览量可以很清晰的知道这篇文章被阅读的次数。而点赞功能则可以清晰的反应在阅读这篇文章的人中有多少人喜欢这篇文章。可以说这两项功能对提升用户体验是非常有帮助的。
在众多phpcms框架中phpcm sv9可以说是非常受欢迎的,功能齐全,操作简便,二次开发也很方便。无论,是懂php程序还是不懂php程序的小白都可以轻松上手。(遗憾的是:团队已经放弃维护了。)
用过phpcms的人都知道,在它自带的模板中有文章点击量功能,但是没有点赞功能。今天就分享下,如何利用phpcmsv9的文章点击量实现点赞功能。
既然是利用文章点击量来实现点赞功能,当然得先了解它的点击量是怎么实现的。
1、文章点击量的用法
phpcmsv9的文章点击量是通过api接口实现的,在列表页模板中的调用形式如下:
{php $db = pc_base::load_model('hits_model'); $_r = $db->get_one(array('hitsid'=>'c-'.$modelid.'-'.$r[id])); $views = $_r[views];}
在phpcmsv9中文章点击量是通过'hits_model'模块实现的,然后通过'hits_model'把文章的相关文章点击量数据调出来。简单的说,就是根据'hitsid',直接查数据库即可拿到想要的数据。
从上面的调用形式中可以知道 'hitsid' 拼接了 'modelid' 和 'id', 'id' 是文章id号,'modelid' 是文章所属栏目使用的模型id号。'$_r' 就是查询到的对应文章的点击量相关数据。因此,要实现文章点赞功能,我们可以把点赞字段加到文章点击量表中,和文章点击量放在一起。
2、文章点赞功能实现
①找到数据库中的v9_hits数据表(如果修改过前缀则是 '前缀'拼上hits),然后在这张表中插入一个字段‘zan’(你也可以用其他的名字,只要后面调用的时候保存一致即可)。你也可以用执行sql的方式添加字段。
ALTER TABLE `v9_hits` ADD `zan` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0', ADD INDEX ( `zan` )
②复制根目录下 api 文件夹里的 count.php文件,(复制出来的文件名可以随意取名,这里为了方便就取名为 zan.php),然后修改 zan.php,修改后的代码如下:
<?php defined('IN_PHPCMS') or exit('No permission resources.'); /** * 点赞统计 */ $db = ''; $db = pc_base::load_model('hits_model'); if($_POST['modelid'] && $_POST['id']) { $model_arr = array(); $model_arr = getcache('model','commons'); $modelid = intval($_POST['modelid']); $hitsid = 'c-'.$modelid.'-'.intval($_POST['id']); $r = get_count($hitsid); if(!$r) exit; extract($r); hits($hitsid); echo ++$zan; } /** * 获取点赞数量 * @param $hitsid */ function get_count($hitsid) { global $db; $r = $db->get_one(array('hitsid'=>$hitsid)); if(!$r) return false; return $r; } /** * 点赞次数统计 * @param $contentid */ function hits($hitsid) { global $db; $r = $db->get_one(array('hitsid'=>$hitsid)); if(!$r) return false; $zan = $r['zan'] + 1; //$r['zan']目前数据库中存储的点赞数量, $sql = array('zan'=>$zan,'updatetime'=>SYS_TIME); //'zan'对应上面在hits数据表中添加的点赞字段,这句代码是更新点赞数据,实现点赞加1 return $db->update($sql, array('hitsid'=>$hitsid)); } ?>
$_POST['modelid'] 说明:如果用的是post方式实现文章点赞就用$_POST['modelid'],如果是get方式就用$_GET['modelid']。
$_POST['id'] 说明:如果用的是post方式实现文章点赞就用$_POST['id'],如果是get方式就用$_GET['id']。
③复制根目录下的api.php文件,重命名为 apip.php 。(如果用的get方式实现点赞,则不用做这步)。
④修改根目录下 api文件夹中的 count.php 文件 ,需要在这个文件里添加两行代码,如图:
这里的修改主要是为了调用点赞数据。
$zan = $r['zan'] 的意思是,把数据库中查出来的点赞数赋值给 $zan 变量,$('#zan').html('<?php echo $zan?>'),这是一句jq代码,它的意思是把点赞数据显示到id为'zan'的元素上。
⑤接下来就可以在文章页实现点赞功能了,主要通过给点赞按钮添加点击事件来实现:
<span id="zan">点赞按钮</span> <script type="text/javascript"> $(function(){ $('#zan').click(function(){ $.ajax({ type: 'POST', url: '/apip.php', //如果是给方式的话则为 api.php data: {'op':'zan', 'id':'{$id}', 'modelid':'{$modelid}'}, success:function (e) { $("#zan").html(e); } }) }) }) </script> <script language="JavaScript" src="{APP_PATH}api.php?op=count&id={$id}&modelid={$modelid}"></script>
在文章页就实现了点赞功能和点赞量显示了。
在列表页中调用点赞数量,只需在调用文章点击量时添加一个变量即可:
{php $db = pc_base::load_model('hits_model'); $_r = $db->get_one(array('hitsid'=>'c-'.$modelid.'-'.$r[id])); $views = $_r[views]; $zan = $_r['zan']}
$zan = $_r['zan']就是新增的变量。
phpcmsv9通过文章点击量实现文章点赞功能就实现了,如果有什么不懂的可以评论留言或者邮件。