K9 通用版 博客版 主题版 地方门户版 企业版 |   企业(ASP) 分类 使用 分享 疑问 模板 建议 帮助 错误 其他
+新建主题 [Ajax]
填写帐号密码即可完成注册
+新建话题 最新回复排序 最新主题排序 精华帖子

轻松给kingcms php sp1版增加个“添加收藏”功能

12Next >

toymen 发表于:10-12-23 23:40 [添加收藏] 楼主 [回复] #Top#
toymen 人气:518 积分:3458 金币:23864
KC元老
既然是CMS,相信不少人拿来做文章系统。如果这个文章系统带有会员功能的话,相信这个“添加收藏”会有一定的用途。

其实在kc企业版中,这些功能基本都具备,只是没有完整写出来而已……

第一步:先做准备工作。
在数据库中找到king_favorite数据表,增加两个字段:kpath、ktitle。

第二步:将以下代码复制到../portal/index.php中。
代码如下:

function king_ajax_favorite(){
global $king;
//获取用户登录状态,如果没有登陆,提示并返回
$king->load('user');
if($user=$king->user->checkLogin()){//已登录
$userid=$user['userid'];
unset($user);
}else{//未登录
kc_error(您还没有登陆!);
return;
}
//接收页面提交的数据
$kid=kc_get('kid',2,1);
$modelid=kc_get('modelid',22,1);
$listid=kc_get('listid',2,1);
$ktitle=kc_get('ktitle',0,1);
$url=kc_get('kpath',0,1);
//判断该用户是否已经收藏本页,已收藏则返回
$result=$king->db->getRows_one("select kid from %s_favorite where userid=$userid and
listid=$listid and kid=$kid");
if($result){
kc_error(您已经收藏过该文章,请勿重复收录!);
return;
}
//记录收藏次数
$model=$king->portal->infoModel($modelid);
if($res=$king->db->getRows_one("select nfavorite from %s__{$model['modeltable']} where
kid=$kid")){
$nfavorite=$res['nfavorite']+1;
$_array=array(
'nfavorite' =>$nfavorite,
);
$king->db->update('%s__'.$model['modeltable'],$_array,"kid=$kid");
}else{
kc_error($king->lang->get('portal/error/notq'));
return;
}
//写数据库
$_array=array(
'kid' =>$kid,
'userid' =>$userid,
'listid' =>$listid,
'url' =>$url,
'ktitle' =>$ktitle,
);
$king->db->insert("%s_favorite",$_array);
$xmlpath=$king->config('xmlpath','portal').'/portal/'.$modelid.'/'.wordwrap
($kid,1,'/',1).'.xml';
kc_f_delete($xmlpath);
$cachepath='portal/favorite/'.$modelid.'/'.$kid;
$king->cache->del($cachepath);
$js="$('#k_favorite').html($nfavorite);";
kc_ajax('OK','<p class="k_ok">'.$king->lang->get('portal/ok/submit').'</p>',0,$js);
}


第三步:在文章模板中加入“添加收藏”代码
代码如下:

<input name="ktitle" id="ktitle" value="{king:title/}"/>
<input name="kpath" id="kpath" value="{king:path/}"/>
<a href="javascript:;" class="k_ajax" rel="{URL:'{config:system.inst/}
portal/index.php',CMD:'favorite',modelid:{king:modelid/},listid:{king:listid/},kid:
{king:kid/},ktitle:$('#ktitle').val(),kpath:$('#kpath').val(),userid:$('#userid').val()}">加入收
藏</a>


第四步:会员调用代码
代码如下:

{king:dbqueryquery="select ktitle,kpath from %s_favorite where userid=(king:userid/) order by
kid desc limit 0,10"}
<p><a href="{king:kpath/}">{king:ktitle/}</a></p>
{/king:dbquery}


完工!

要是想达到官方论坛这样的效果,还需要修改,可惜俺不会,自己琢磨吧!

调用时的分页,坛里有相关的帖子,自己看看!

toymen 发表于:10-12-24 21:07 编辑于:12-24 21:29 10楼 [回复] #Top#
toymen 人气:518 积分:3458 金币:23864
KC元老
如需阅读本内容,请登录或注册成为KingCMS官方网站会员!
一点玉米 发表于:10-12-23 23:43 沙发 [回复] #Top#
一点玉米 人气:368 积分:43 金币:7679
EST团队
这个得顶 
有没有演示啊
luke 发表于:10-12-23 23:50 板凳 [回复] #Top#
luke 人气:489 积分:1943 金币:8004
最佳新人 灌水狂人
不错!啊!
toymen 发表于:10-12-23 23:56 4楼 [回复] #Top#
toymen 人气:518 积分:3458 金币:23864
KC元老
看来还是有图有真相呵!(演示为方便,没判断是否收藏,所以标题都是一样的)

1、修改数据表,加字段。

轻松给kingcms php sp1版增加个“添加收藏”功能[图1]

2、文章“添加收藏”链接

轻松给kingcms php sp1版增加个“添加收藏”功能[图2]

3、调用结果

轻松给kingcms php sp1版增加个“添加收藏”功能[图3]
一点玉米 发表于:10-12-24 00:02 5楼 [回复] #Top#
一点玉米 人气:368 积分:43 金币:7679
EST团队
赞一个
toymen 发表于:10-12-24 09:02 6楼 [回复] #Top#
toymen 人气:518 积分:3458 金币:23864
KC元老
其实第一步是可以省略的,只不过调用的时候需要循环。
首先根据userid调出listid、kid,然后再用listid、kid调出文章路径、标题等。相应的代码改一下就行了。
以下代码没经过测试,有兴趣自己试吧:  

{king:dbqueryquery="select listid,kid from %s_favorite where userid=(king:userid/) order by 
kid desc"}
{king:portal.article where listid=(king:listid/) kid=(king:kid/)}
<p><a href="{king:kpath/}">{king:ktitle/}</a></p>
{/king:portal.article}
{/king:dbquery}

nb 发表于:10-12-24 11:14 7楼 [回复] #Top#
nb 人气:19 积分:1000 金币:2345
技术贴。。+1
pktsandy 发表于:10-12-24 16:52 8楼 [回复] #Top#
pktsandy 人气:1181 积分:3438 金币:29313
VIP 管理团队 EST团队 技术精英 灌水狂人
新手学习!这个还不如插个AddThis!
toymen 发表于:10-12-24 17:16 编辑于:12-24 17:20 9楼 [回复] #Top#
toymen 人气:518 积分:3458 金币:23864
KC元老
Reply: 8楼
不好意思,俺不知ADDTHIS!

12Next >

发表回复

帐号 匿名发布 审核后可见 [加载完整在线编辑器]
内容
验证码
KingCMS 内容管理系统

关于我们 联系我们 广告报价 付款方式 站点导航

Copyright © 2004-2015 Focuznet All rights reserved.

广州唯众网络科技有限公司 粤ICP备08008106号

中奖了!