在帝国CMS中实现信息置顶功能并扣除会员积分,需要对系统进行一些修改。以下是详细的步骤和代码示例,帮助您顺利完成设置。
首先,在所需的系统模型中添加一个名为 top 的 int 字段,并设置为单选按钮(0 表示否,1 表示是)。接下来,主要修改 e/class/qinfofun.php 文件中的两处代码,分别用于增加和编辑操作。
第一步:修改增加操作的代码
在文件中找到以下代码:
esetcookie("lastaddinfotime",time(),time()+3600*24);
在其下方至 //------------- 之间替换为以下代码:
// 置顶扣分
$t = $empire->fetch1("select top from {$dbtbpre}ecms_".$tbname." where userid='$muserid' and id='$id' and classid='$classid' limit 1");
if ($t[top]) {
$w = $empire->fetch1("select userfen from {$dbtbpre}enewsmember where userid='$muserid'");
if ($w[userfen] >= 10) {
$sql3 = $empire->query("update {$dbtbpre}enewsmember set userfen=userfen-10 where userid='$muserid'");
printerror("AddQinfoSuccess", $reurl, 1);
} else {
$sql4 = $empire->query("update {$dbtbpre}ecms_".$tbname." set top=0 where userid='$muserid' and id='$id' and classid='$classid' limit 1");
printerror("jifenbugou", $reurl, 1);
}
} else {
printerror("AddQinfoSuccess", $reurl, 1);
}
第二步:修改编辑操作的代码
找到以下代码:
if ($sql) {
$reurl = DoingReturnUrl("ListInfo.php?mid=$mid", $add['ecmsfrom']);
if ($add['editgotoinfourl'] && $infor['checked']) // 返回内容页
{
if ($cr['showdt'] == 1) {
$reurl = $public_r[newsurl]."e/action/ShowInfo/?classid=$classid&id=$id";
} elseif ($cr['showdt'] == 2) {
$reurl = $public_r[newsurl]."e/action/ShowInfo.php?classid=$classid&id=$id";
} else {
$reurl = $titleurl;
}
}
在其下方至 //------------- 之间替换为以下代码:
// 置顶扣分
$t = $empire->fetch1("select top from {$dbtbpre}ecms_".$tbname." where userid='$muserid' and id='$id' and classid='$classid' limit 1");
if ($t[top]) {
$w = $empire->fetch1("select userfen from {$dbtbpre}enewsmember where userid='$muserid'");
if ($w[userfen] >= 10) {
$sql3 = $empire->query("update {$dbtbpre}enewsmember set userfen=userfen-10 where userid='$muserid'");
printerror("EditQinfoSuccess", $reurl, 1);
} else {
$sql4 = $empire->query("update {$dbtbpre}ecms_".$tbname." set top=0 where userid='$muserid' and id='$id' and classid='$classid' limit 1");
printerror("jifenbugou", $reurl, 1);
}
} else {
printerror("EditQinfoSuccess", $reurl, 1);
}
注意事项
红色部分的数字 10 表示扣除的积分值,您可以根据实际需求自行调整。另外,提示信息 jifenbugou 可以在 e/data/language/gb/pub/q_message.php 文件中进行自定义修改。
为了避免与现有字段冲突,建议新增加一个名为 top 的字段,这样可以减少未来升级时可能带来的麻烦。
如果会员积分不足,系统会提示“积分不足”,但信息仍然可以提交,只是无法置顶。
列表模板调用方法
在列表模板中可以通过以下 SQL 查询调用置顶信息:
[e:loop={"select * from phome_ecms_house where top=1 and checked=1 and classid='$GLOBALS[navclassid]' limit 3",3,24,0}]
=$bqr[myarea]?>
[置顶]
=$bqr[xiangxidizhi]?>
=$bqr[shi]?>室=$bqr[ting]?>厅
=$bqr[size]?>㎡
=$bqr[money]?>
=date('Y-m-d',$bqr[newstime])?>
[/e:loop]
更新功能:添加到期时间
为了限制置顶的有效期,可以在数据库中新增一个名为 date 的字段,表示到期时间。在上述列表模板的 SQL 查询中加入以下条件:
and (unix_timestamp(youxiaoqi)-UNIX_TIMESTAMP(NOW())) > 0
以上就是实现帝国CMS信息置顶功能并扣除会员积分的完整步骤。如果您有任何问题,欢迎跟帖讨论,我会尽力解答。