红穆笔记
首頁 程序筆記 帝國高效率隨機調用功能擴展
程序筆記 帝國cms

帝國高效率隨機調用功能擴展

帝国高效率随机调用功能扩展

知識點總結
1.PHP代碼

function ZQrand($classid , $num){
    global $dbtbpre,$empire;
    /* 檢測json文件是否存在 */
    $file_arrs = glob(ECMS_PATH."d/json/*.json");
    $file_cache = $file_arrs[0];
    //緩存整個news表的數據
    if(!file_exists($file_cache) || time()-@filemtime($file_cache)>86400){
        //創建文件夾
        @mkdir(ECMS_PATH."d/json/",0777);
        //查詢分類
        $hm_class=$empire->query("select classid from {$dbtbpre}enewsclass"); 
        while($hm_r=$empire->fetch($hm_class))
        {
            //查詢分類下面的所有id
            $hm_news=$empire->query("SELECT id FROM `{$dbtbpre}ecms_news` WHERE `classid` = {$hm_r[classid]}"); 
            while($hm_nr=$empire->fetch($hm_news))
            {
                $news_data[] = $hm_nr[id];
                $all_id[] = $hm_nr[id];
            }
            file_put_contents(ECMS_PATH . "d/json/" . $hm_r['classid'] . ".json",json_encode($news_data));
            unset($news_data);
        }
        file_put_contents(ECMS_PATH . "d/json/" . allId . ".json",json_encode($all_id));
    }
    $num = (int) empty($num)?10:$num;
    $classid = (int)$classid;
   // 獲取所有的文件
    $hm_class=$empire->fetch1("select classid from {$dbtbpre}enewsclass where classid = {$classid}"); 
    if(empty($hm_class[classid])){
        // 隨機調用
        $file_arrs = json_decode(file_get_contents(ECMS_PATH."d/json/allId.json"),true);
    }else{
        //調用欄目
        $file_arrs = json_decode(file_get_contents(ECMS_PATH."d/json/{$classid}.json"),true);
        if(empty($file_arrs)){
            $file_arrs = json_decode(file_get_contents(ECMS_PATH."d/json/allId.json"),true);
        }
    }
    if(empty($file_arrs)){
        return '';
    }else{
        for ($rani=1; $rani<=$num; $rani++){
            $rand_id.= $file_arrs[mt_rand(0,count($file_arrs)-1)].",";    
        }
        $rand_id = rtrim($rand_id,",");
        $where = "id in ($rand_id)";
        return $where;
    }
}

2.js代碼,主要用於關閉彈窗,定時的

setTimeout(function(){
    window.close();
    document.onload = window.close();
},1000);

2022.8.19 代碼改進:

function ZQrand($classid , $num = 100){
    global $dbtbpre,$empire;
    ZQcread();
    $num = (int) $num*3;
    $classid = (int)$classid;
   // 獲取所有的文件
    $hm_class=$empire->fetch1("select classid from {$dbtbpre}enewsclass where classid = {$classid} and `bclassid` != 0"); 
    if(empty($hm_class[classid])){
        // 隨機調用
        $file_arrs = json_decode(file_get_contents(ECMS_PATH."d/json/allId.json"),true);
    }else{
        //調用欄目
        $file_arrs = json_decode(file_get_contents(ECMS_PATH."d/json/classId.json"),true);
        $file_arrs = $file_arrs[$classid];
    }
    if(empty($file_arrs)){
        return '';
    }else{
        for ($rani=0; $rani<$num; $rani++){
            $rand_id.= $file_arrs[mt_rand(0,count($file_arrs)-1)].",";    
        }
        $rand_id = rtrim($rand_id,",");
        $where = "id in ($rand_id)";
        return $where;
    }
}

function ZQcread(){//創建緩存文件
    global $dbtbpre,$empire;
    /* 檢測json文件是否存在 */
    $class_cache = ECMS_PATH."d/json/classId.json";
    $all_cache =  ECMS_PATH."d/json/allId.json";
    //緩存整個news表的數據
    // time()-@filemtime($file_cache)>86400
    if(!file_exists($class_cache) || !file_exists($all_cache)){
        //創建文件夾
        @mkdir(ECMS_PATH."d/json/",0777);
        //查詢分類
        $hm_class=$empire->query("select classid from {$dbtbpre}enewsclass"); 
        while($hm_r=$empire->fetch($hm_class))
        {
            //查詢分類下面的所有id
            $hm_news=$empire->query("SELECT id FROM `{$dbtbpre}ecms_news` WHERE `classid` = {$hm_r[classid]}"); 
            while($hm_nr=$empire->fetch($hm_news))
            {
                $class_data[$hm_r['classid']][] = $hm_nr[id];
                $all_data[] = $hm_nr[id];
            }
        }
        file_put_contents($class_cache,json_encode($class_data));
        file_put_contents($all_cache,json_encode($all_data));
    }
}

客戶反饋高效率調用會出現bug,經過查證發現,主要是num參數限制了,已改進

10.5 根據自己的需求修改,備份於此

function ZQrand($classid , $num = 60){
    global $dbtbpre,$empire;
    /* 檢測json文件是否存在 */
    $file_arrs = glob(ECMS_PATH."d/json/*.json");
    $file_cache = $file_arrs[0];
    //緩存整個news表的數據
    if(!file_exists($file_cache)){
        //創建文件夾
        @mkdir(ECMS_PATH."d/json/",0777);
        //查詢分類
        $hm_class=$empire->query("select classid from {$dbtbpre}enewsclass"); 
        while($hm_r=$empire->fetch($hm_class))
        {
            //查詢分類下面的所有id
            $hm_news=$empire->query("SELECT id FROM `{$dbtbpre}ecms_news` WHERE `classid` = {$hm_r[classid]}"); 
            while($hm_nr=$empire->fetch($hm_news))
            {
                $news_data[] = $hm_nr[id];
            }
            file_put_contents(ECMS_PATH . "d/json/" . $hm_r['classid'] . ".json",json_encode($news_data));
            unset($news_data);
        }
        //查詢所有
        $more = 0;
        $hm_news2=$empire->query("SELECT id FROM `{$dbtbpre}ecms_news`"); 
        while($hm_nr2=$empire->fetch($hm_news2))
        {
            $all_id[] = $hm_nr2[id];
            if($more>=1000){
                file_put_contents(ECMS_PATH . "d/json/allId{$hm_nr2[id]}.json",json_encode($all_id));
                unset($all_id);
                $more = 0;
            }
            $more++;
        }
        
    }
    $num = (int) empty($num)?10:$num;
    $classid = (int)$classid;
   // 獲取所有的文件
    $hm_class=$empire->fetch1("select classid from {$dbtbpre}enewsclass where classid = {$classid} and bclassid != 0"); 
    if(empty($hm_class[classid])){
        // 隨機調用
        $file_arrs = glob(ECMS_PATH."d/json/allId*.json");
        $counts = count(glob(ECMS_PATH."d/json/allId*.json")) - 1;
        // print_r($file_arrs);
        // echo $counts;
        $file_arrs = $file_arrs[mt_rand(0,$counts)];
        // echo $file_arrs;
        $file_arrs = json_decode(file_get_contents($file_arrs),true);
    }else{
        //調用欄目
        $file_arrs = json_decode(file_get_contents(ECMS_PATH."d/json/{$classid}.json"),true);
    }
    if(empty($file_arrs)){
        return '';
    }else{
        for ($rani=1; $rani<=$num; $rani++){
            $rand_id.= $file_arrs[mt_rand(0,count($file_arrs)-1)].",";   
            // echo mt_rand(1,500);
        }
        $rand_id = rtrim($rand_id,",");
        $where = "id in ($rand_id)";
        return $where;
    }
}

微信赞赏

微信

支付宝赞赏

支付寶

✍️ 作者: 紅穆

網站管理員 · 感謝閱讀,更多精彩內容敬請關注

作者主頁 查看主頁 →

相關文章

帝国CMS数据库语句&amp;SQL语句格式

帝國CMS數據庫語句&amp;SQL語句格式 程序筆記 帝國cms

帝國CMS擴展SQL程序編寫介紹,帝國CMS數據庫語句&SQL語句格式基本範例:說明:下面例子都是以PHP文件放在系統根目錄爲基準。例1:連接MYSQL程序。(a.php)&lt;?php require('e/class/connect.php'); //引入數據庫配置文件和公共函數文件 requ…
👁 353
帝国CMS获取系统COOKIE变量函数getcvar()

帝國CMS獲取系統COOKIE變量函數getcvar() 程序筆記 帝國cms

取得系統COOKIE變量函數語法:getcvar($var,$ecms)說明:$var:爲變量名$ecms:0爲設置前臺COOKIE變量,1爲設置後臺COOKIE變量。此參數可省略,默認爲0。使用範例:getcvar('mlusername'),取得前臺登陸會員的用戶名getcvar('loginu…
👁 296
帝国CMS灵动标签调用字段大全

帝國CMS靈動標籤調用字段大全 程序筆記 帝國cms

將所有支持靈動標籤調用的字段收集歸類帝國CMS靈動標籤: [e:loop={欄目ID/專題ID,顯示條數,操作類型,只顯示有標題圖片,附加SQL條件,顯示排序}] 模板代碼內容 [/e:loop]調用時間:&lt;?=date('m-d',$bqr[newstime])?&gt; &lt;?=dat…
👁 3749

推薦閱讀

印刷包装制版类网站模板 0650

印刷包裝製版類網站模板 0650 實用收藏 易優模板

一款針對印刷、包裝與製版行業的eyoucms網站模板。設計風格專業實用,能夠展示印刷包裝產品、製版工藝、設計案例及企業實力。有助於印刷包裝企業在線上展示品牌,吸引品牌客戶。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優C…
👁 51
响应式塑料封条制品企业网站模板 0651

響應式塑料封條製品企業網站模板 0651 實用收藏 易優模板

此套eyoucms響應式模板適用於塑料封條與製品企業,設計風格專業實用,能夠展示塑料封條產品、製品系列、工業應用及技術參數。有助於塑料製品企業在線上展示產品,吸引工業客戶。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優C…
👁 49
机械扫雪设备类网站模板 0652

機械掃雪設備類網站模板 0652 實用收藏 易優模板

一款針對機械掃雪設備類企業的eyoucms網站模板。設計風格專業實用,能夠展示掃雪設備產品、技術參數、工業應用及工程案例。有助於機械設備企業在線上展示產品,吸引市政與物業客戶。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易…
👁 37
资源网站typecho001模板

資源網站typecho001模板 程序筆記 Typecho

typecho001模板板本請勿修改本模板文件夾名稱 文件夾名稱爲:typecho001 1.4修復文章頁面js輸出問題1.3修復未安裝插件時的報錯提示優化列表頁代碼輸出1.2修復評論功能增加自定義首頁標題1.1修復評論回覆不對稱功能添加首頁單獨的標題設置功能增加網站favicon.ico圖標增加一…
👁 199
教学设备仪器耗材网站模板 0653

教學設備儀器耗材網站模板 0653 實用收藏 易優模板

此套eyoucms模板適用於教學設備、儀器與耗材行業,設計風格專業教育,能夠展示教學設備、實驗儀器、耗材產品及技術方案。有助於教育裝備企業在線上展示產品,吸引學校與培訓機構客戶。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結…
👁 57
typecho分页样式的修改

typecho分頁樣式的修改 程序筆記 Typecho

大人,時代變了!目前typecho最完美的解決方案了,因爲百度只能看到固定思維的代碼。實際生成的html代碼,乾淨到讓人窒息完全的自定義,包括給li元素加上class,給a元素加上class,給上一頁下一頁加上class,去除typecho自帶用於表示更多的li標籤。甚至裏面的內容我也能添加一些文字…
👁 517