首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

帝國 CMS 置頂扣除積分機制實現教程

     編輯:PHP 相關知識

需求分析

實現會員發布資訊置頂時自動扣除積分,積分不足則取消置頂並提示。需修改核心檔案 e/class/qinfofun.php。

資料庫準備

  1. 在系統模型中新增 int 欄位 top
  2. 單選按鈕設定:0=否、1=是
  3. 避免與內建 firsttitle 欄位衝突,便於未來升級維護

核心程式碼修改

新增資訊處理 (AddQinfo)

// 置頂扣分邏輯
$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) {  // 10 為扣除積分,可自行調整
        $empire->query("UPDATE {$dbtbpre}enewsmember 
            SET userfen=userfen-10 WHERE userid='$muserid'");
        printerror("AddQinfoSuccess", $reurl, 1);
    } else {
        // 積分不足:強制取消置頂
        $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);
}

編輯資訊處理 (EditQinfo)

// 置頂扣分邏輯 (編輯時同樣檢查)
$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) {
        $empire->query("UPDATE {$dbtbpre}enewsmember 
            SET userfen=userfen-10 WHERE userid='$muserid'");
        printerror("EditQinfoSuccess", $reurl, 1);
    } else {
        $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);
}

語言包配置

在 e/data/language/gb/pub/q_message.php 中新增:

'jifenbugou' => '積分不足,無法置頂,已自動取消置頂狀態',

前台調用範例

[e:loop={"SELECT * FROM phome_ecms_house 
    WHERE top=1 AND checked=1 AND classid='$GLOBALS[navclassid]' 
    LIMIT 3", 3, 24, 0}]
<tr onmouseout="this.style.backgroundColor='#ffffff'" 
    onmouseover="this.style.backgroundColor='#F1F5FC'">
    <td><?=$bqr['myarea']?></td>
    <td class="tx"><font color="red">[置頂]</font> 
        <a href="<?=$bqsr['titleurl']?>" title="<?=$bqr['title']?>" target="_blank">
        <?=$bqr['xiangxidizhi']?></a></td>
    <td><?=$bqr['shi']?>室<?=$bqr['ting']?>廳</td>
    <td><?=$bqr['size']?><span class="m">㎡</span></td>
    <td><?=$bqr['money']?></td>
    <td align="right"><?=date('Y-m-d', $bqr['newstime'])?></td>
</tr>
[/e:loop]

進階擴充:到期時間控制

新增 youxiaoqi (有效期) 欄位,列表查詢加入條件:

AND (UNIX_TIMESTAMP(youxiaoqi) - UNIX_TIMESTAMP(NOW())) > 0

注意事項

  • 修改核心檔案前務必備份
  • 升級系統時需重新套用修改
  • 積分數值建議改為後台可配置參數
  • 建議加入操作日誌記錄扣除明細
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved