最新公告
  • 欢迎您光临源码资源下载站,一个优质的网站源码和小程序源码分享基地。
  • 帝国cms修改PHP设置小于文章发布时间(newstime)的文章调用条件

    正文概述 帝国cms教程   2024-08-16 01:25:44  
    《帝国cms动态模式下,千万级文章定时发布,无需人工干预的方法》!
    这篇文章里面,可以使你的网站存储上千万文章,而保证你不需要每天去自动审核发布!
    但是需要你修改模版的调用,设置为:newstime <= '.time().'
    在考虑一番后,我发现有些网站调用过多,如果一个一个的去修改调用标签,可能要累死!
    所以我们可以直接将这个条件写入到帝国PHP里面,这样可以避免每次调用都需要写这个SQL语句!
    教程开始!
    第一步,找到/e/class/t_functions.php。
    由于灵动标签和万能标签最常用,所以只修改这两快对应的代码!
    万能标签的修改
    搜索:sys_GetEcmsInfo
    大概612行就是function sys_GetEcmsInfo($classid,$line,$strlen,$have_class=0,$enews=0,$tempid,$doing=0,$ewhere='',$eorder='')这个函数,我们
    在函数里面global $empire,$public_r;下面一行
    原函数sys_GetEcmsInfo($classid,$line,$strlen,$have_class=0,$enews=0,$tempid,$doing=0,$ewhere='',$eorder='')
    原函数:
    //带模板的标签
    function sys_GetEcmsInfo($classid,$line,$strlen,$have_class=0,$enews=0,$tempid,$doing=0,$ewhere='',$eorder=''){
        global $empire,$public_r;
        $sql=sys_ReturnBqQuery($classid,$line,$enews,$doing,$ewhere,$eorder);
        if(!$sql)
        {return "";}
        //取得模板
        $tr=sys_ReturnBqTemp($tempid);
        if(empty($tr['tempid']))
        {return "";}
        $listtemp=str_replace('[!--news.url--]',$public_r[newsurl],$tr[temptext]);
        $subnews=$tr[subnews];
        $listvar=str_replace('[!--news.url--]',$public_r[newsurl],$tr[listvar]);
        $rownum=$tr[rownum];
        $formatdate=$tr[showdate];
        $docode=$tr[docode];
        //替换变量
        $listtemp=ReplaceEcmsinfoClassname($listtemp,$enews,$classid);
        if(empty($rownum))
        {$rownum=1;}
        //字段
        $ret_r=ReturnReplaceListF($tr[modid]);
        //列表
        $list_exp="[!--empirenews.listtemp--]";
        $list_r=explode($list_exp,$listtemp);
        $listtext=$list_r[1];
        $no=1;
        $changerow=1;
        while($r=$empire->fetch($sql))
        {
            $r[oldtitle]=$r[title];
            //替换列表变量
            $repvar=ReplaceListVars($no,$listvar,$subnews,$strlen,$formatdate,$url,$have_class,$r,$ret_r,$docode);
            $listtext=str_replace("<!--list.var".$changerow."-->",$repvar,$listtext);
            $changerow+=1;
            //超过行数
            if($changerow>$rownum)
            {
                $changerow=1;
                $string.=$listtext;
                $listtext=$list_r[1];
            }
            $no++;
        }
        //多余数据
        if($changerow<=$rownum&&$listtext<>$list_r[1])
        {
            $string.=$listtext;
        }
        $string=$list_r[0].$string.$list_r[2];
        echo $string;
    }
    下面加上:
    if(empty($ewhere)){
        $ewhere = "newstime <= ".time()."";
    }
    如图:
    帝国cms修改PHP,直接设置小于文章发布时间(newstime)的文章调用条件
    完整代码如下:
    //带模板的标签
    function sys_GetEcmsInfo($classid,$line,$strlen,$have_class=0,$enews=0,$tempid,$doing=0,$ewhere='',$eorder=''){
        global $empire,$public_r;
        if(empty($ewhere)){
        $ewhere = "newstime <= ".time()."";
        }    
        $sql=sys_ReturnBqQuery($classid,$line,$enews,$doing,$ewhere,$eorder);
        if(!$sql)
        {return "";}
        //取得模板
        $tr=sys_ReturnBqTemp($tempid);
        if(empty($tr['tempid']))
        {return "";}
        $listtemp=str_replace('[!--news.url--]',$public_r[newsurl],$tr[temptext]);
        $subnews=$tr[subnews];
        $listvar=str_replace('[!--news.url--]',$public_r[newsurl],$tr[listvar]);
        $rownum=$tr[rownum];
        $formatdate=$tr[showdate];
        $docode=$tr[docode];
        //替换变量
        $listtemp=ReplaceEcmsinfoClassname($listtemp,$enews,$classid);
        if(empty($rownum))
        {$rownum=1;}
        //字段
        $ret_r=ReturnReplaceListF($tr[modid]);
        //列表
        $list_exp="[!--empirenews.listtemp--]";
        $list_r=explode($list_exp,$listtemp);
        $listtext=$list_r[1];
        $no=1;
        $changerow=1;
        while($r=$empire->fetch($sql))
        {
            $r[oldtitle]=$r[title];
            //替换列表变量
            $repvar=ReplaceListVars($no,$listvar,$subnews,$strlen,$formatdate,$url,$have_class,$r,$ret_r,$docode);
            $listtext=str_replace("<!--list.var".$changerow."-->",$repvar,$listtext);
            $changerow+=1;
            //超过行数
            if($changerow>$rownum)
            {
                $changerow=1;
                $string.=$listtext;
                $listtext=$list_r[1];
            }
            $no++;
        }
        //多余数据
        if($changerow<=$rownum&&$listtext<>$list_r[1])
        {
            $string.=$listtext;
        }
        $string=$list_r[0].$string.$list_r[2];
        echo $string;
    }
    这样万能标签的修改就搞定了!
    灵动标签的修改
    接下来搜索灵动标签!
    大概669行
    //灵动标签:返回SQL内容函数
    function sys_ReturnEcmsLoopBq($classid=0,$line=10,$enews=3,$doing=0,$ewhere='',$eorder=''){
        return sys_ReturnBqQuery($classid,$line,$enews,$doing,$ewhere,$eorder);
    }
    修改成
    function sys_ReturnEcmsLoopBq($classid=0,$line=10,$enews=3,$doing=0,$ewhere='',$eorder=''){
    if(empty($ewhere)){
        $ewhere = "newstime <= ".time()."";
    }
        return sys_ReturnBqQuery($classid,$line,$enews,$doing,$ewhere,$eorder);
    }
    修改如图:
    帝国cms修改PHP,直接设置小于文章发布时间(newstime)的文章调用条件
    这样修改后,灵动标签的调用也默认有那个newstime的判断了!
    这样改完之后,只要你网站用到了灵动标签和万能标签,那么都可以实现定时发布!
    列表页的修改
    列表页的修改和上面那个不同,由于是动态,我们需要找到的文件为:/e/action/InfoType/index.php
    打开后,搜索:$query="select ".ReturnSqlListF($mid)." from {$dbtbpre}ecms_".$tbname." where ".$yhadd.$add
    大概215行!
    //优化
    $yhadd='';
    $yhid=$ttr['yhid'];
    $yhvar='qlist';
    if($yhid)
    {
        $yhadd=ReturnYhSql($yhid,$yhvar,1);
    }
    //总数
    $totalnum=(int)$_GET['totalnum'];
    if($totalnum<1)
    {
        $totalquery="select count(*) as total from {$dbtbpre}ecms_".$tbname." where ".$yhadd.$add;
        $num=$empire->gettotal($totalquery);
    }
    else
    {
        $num=$totalnum;
    }
    $search.='&totalnum='.$num;
    $query="select ".ReturnSqlListF($mid)." from {$dbtbpre}ecms_".$tbname." where ".$yhadd.$add;
    $query.=" order by ".ReturnSetTopSql('list').$addorder." limit $offset,$line";
    $sql=$empire->query($query);
    修改为:
    //优化
    $yhadd='';
    $yhid=$ttr['yhid'];
    $yhvar='qlist';
    if($yhid)
    {
        $yhadd=ReturnYhSql($yhid,$yhvar,1);
    }
    //总数
    $totalnum=(int)$_GET['totalnum'];
    if($totalnum<1)
    {
    if(empty($yhadd)){
       $yhadd = "newstime <= ".time()."";
    }  

        $totalquery="select count(*) as total from {$dbtbpre}ecms_".$tbname." where ".$yhadd.$add;
        $num=$empire->gettotal($totalquery);
    }
    else
    {
        $num=$totalnum;
    }
    $search.='&totalnum='.$num;
    $query="select ".ReturnSqlListF($mid)." from {$dbtbpre}ecms_".$tbname." where ".$yhadd.$add;
    $query.=" order by ".ReturnSetTopSql('list').$addorder." limit $offset,$line";
    $sql=$empire->query($query);
    搜索列表修改
    找到e/search/result/index.php,找到代码变量$query这个是SQL语句的变量,找到,在后面加上代码:
    ="select * from {$dbtbpre}ecms_".$search_r[tbname].($add?' where '.substr($add,5):"newstime <= ".time().'');
    原来的
    $query="select * from {$dbtbpre}ecms_".$search_r[tbname].($add?' where '.substr($add,5):'');
     修改后
    $query="select * from {$dbtbpre}ecms_".$search_r[tbname].($add?' where '.substr($add,5):"newstime <= ".time().'');
    以上修改完后,大功告成!帝国cms修改PHP设置小于文章发布时间(newstime)的文章调用条件
    皓玉源码网,一个优质的源码资源平台!
    皓玉源码网 » 帝国cms修改PHP设置小于文章发布时间(newstime)的文章调用条件