详情页

帝国cms代码片段备忘录

时间:2023年05月25日

编辑:佚名

#TITLE=ecms
#INFO
Cliptext Library for帝国cms7.2 written by jihecai.
This file is provided as a sample Cliptext library of EditPlus.
#SORT=y
#T=html - script
<script type="text/javascript">
//totalMoney - 总共的还款金额
//totalYears - 总共还款年数
//rate       - 月利率
function yuegong(totalMoney, totalYears, rate) {
    var totalLixi = Math.pow(1+rate, totalYears*12);
    var money = totalMoney * rate * totalLixi / (totalLixi-1);
    return parseFloat(money.toFixed(2));
}
</script>
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
#T=栏目显示 一级栏目显示儿子,二级栏目显示兄弟,三级栏目显示父亲的兄弟
<?
$fid=$class_r[$navclassid][bclassid];
$ffid=$class_r[$fid][bclassid];
if($ffid>0)$fid=$ffid;
if($fid==0)$fid=$navclassid;
foreach($class_r as $v){
    if($v[bclassid]==$fid){
        echo '<li><a href="'. $v[classurl] . '">'.$v[classname].'</a></li>';
    }
}
?>
#T=html - 定时刷新
<meta http-equiv="refresh" content="20">,其中20指每隔20秒刷新一次页面. 
2.页面自动跳转:把如下代码加入<head>区域中 
<meta http-equiv="refresh" content="20;url=http://www.jb51.net">,其中20指隔20秒后跳转到http://www.jb51.net页面 
3.页面自动刷新js版 
<script language="JavaScript"> 
function myrefresh(){ 
window.location.reload(); 

setTimeout('myrefresh()',1000); //指定1秒刷新一次 
</script> 
#T=html - 注释
<!-- 在此处写注释 -->
<!-- 
 -->
#T=html- css页内
<style type="text/css">
#T=IP - 获取 - 判断地区
<?php
function getIp(){
        $onlineip='';
        if(getenv('HTTP_CLIENT_IP')&&strcasecmp(getenv('HTTP_CLIENT_IP'),'unknown')){
                $onlineip=getenv('HTTP_CLIENT_IP');
        } elseif(getenv('HTTP_X_FORWARDED_FOR')&&strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),'unknown')){
                $onlineip=getenv('HTTP_X_FORWARDED_FOR');
        } elseif(getenv('REMOTE_ADDR')&&strcasecmp(getenv('REMOTE_ADDR'),'unknown')){
                $onlineip=getenv('REMOTE_ADDR');
        } elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],'unknown')){
                $onlineip=$_SERVER['REMOTE_ADDR'];
        }
        return $onlineip;
}
$onlineip = getIp();
$onlineip ='202.99.192.66';
$ipinfo=json_decode(file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".$onlineip),true);//将API的json格式解码保存到ipinfo变量
?>
<table>
<tr>
<td>IP:</td><td><?php echo $onlineip ?></td>
</tr>
<tr>
<td>国家:</td><td><?php echo $ipinfo["data"]["country"] ?></td>
</tr>
<tr>
<td>省份:</td><td><?php echo $ipinfo["data"]["region"] ?></td>
</tr>
<tr>
<td>城市:</td><td><?php echo $ipinfo["data"]["city"] ?></td>
</tr>
<tr>
<td>县:</td><td><?php echo $ipinfo["data"]["county"] ?></td>
</tr>
<tr>
<td>地区:</td><td><?php echo $ipinfo["data"]["area"] ?></td>
</tr>
<tr>
<td>ISP:</td><td><?php echo $ipinfo["data"]{"isp"}?></td>
</tr>
</table> 
#T=jiuhecai  tittle pic
update [!db.pre!]ecms_news set titlepic=reverse(substring(reverse(substring_index(substring(newstext,locate('src=',newstext)+6),'"',1)),1,255)) where titlepic='' and locate('src=',newstext)>0;
#T=php - header - utf-8
header("Content-Type: text/html; charset=utf-8");
#T=php - slashes
addslashes() 和 stripslashes()
#T=php - 分支switch
switch (条件)
{
case 条件值一:
  //任务一
  break; 
case 条件值二:
  //任务二
  break;
default:
  //默认任务
}
#T=php - 条件判断 ifelseif
if($sex == "男"){
        $totalMoney = $basicMoney  + 0;// 男的没奖金
}else if($sex == "女"){
        $totalMoney = $basicMoney  + 300;// 女的有奖金300元
    }
#T=php - 正则 - 验证字符串
if (isset($_GET["callback"])) {
    if (preg_match("/^[w_]+$/", $_GET["callback"])) {
        echo htmlspecialchars($_GET["callback"]) . '(' . $result . ')';
    } else {
        echo json_encode(array(
            'state'=> 'callback参数不合法'
        ));
    }
} else {
    echo $result;
}
#T=php - 正则替换 - 过滤注释
$CONFIG = json_decode(preg_replace("//*[sS]+?*//", "", file_get_contents("config.json")), true);
#T=Tags - 的id链接
Tags:<?         
$tbname=$class_r[$navinfor['classid']]['tbname'];
$ftbname=$dbtbpre."ecms_".$tbname."_data_".$navinfor['stb'];
$hlt = $empire->fetch1("select infotags from {$ftbname} where id='$navinfor[id]'");   
            $a=$hlt[infotags];
            $str=str_replace(',', ',', $a);
            $tag='';
            $t= explode(",", $str);
                    for($i=0;$i<count($t);$i++)
                    {
                            if($t[$i])
                            {    $datar=$empire->fetch1("select tagid from {$dbtbpre}enewstags where tagname='$t[$i]' limit 1");   
                                    $tagslink="/e/tags/?tagid=".$datar[tagid]."";
                                    $tag.="<a href='$tagslink' target='_blank'>".$t[$i]."</a> ";
                            }
            }
            echo $tag;
            ?> 
#t=Tags - 灵动标签中调用tags
        以下代码放到灵动中
<?
$tbname=$class_r[$bqr[classid]][tbname];
$fb=$bqr[stb];
$ftbname=$dbtbpre."ecms_".$tbname."_data_".$fb;
$navinfor['infotags'] = $empire->gettotal("select infotags as total  from $ftbname where id='$bqr[id]'"); //结果赋值给$navinfor就是为了使用 showtags标签的selfinfo
?>
<br>
Tags:[showtags]'selfinfo',10,0,'',0,'','&nbsp;',0,'','tagname'[/showtags]<br>
#T=Tags - 列表页调用
$classid=$r[classid]; //获取栏目id
$tbname=$class_r[$classid][tbname];//获取数据表
$infotags=$empire->gettotal("select infotags as total from {$dbtbpre}ecms_".$tbname."_data_{$r[stb]} where id='$r[id]'");//查询副表下的infotags字段
if(empty($infotags))
{
    $tags="无";
}else{
    $tags=preg_replace("/(,?)([^,]+)/","<a href='{$public_r[newsurl]}e/tags/?tagname=$2' target='_blank'>$2</a> ",$infotags);          
}
$listtemp=' <dd><a class="t" href="[!--titleurl--]" target="_blank">[!--title--]</a><p class="s"> [!--smalltext--] <a href="[!--titleurl--]">[详细]</a></p><div class="tags">标签:'.$tags.'<p> </p><p><span>[!--newstime--]</span><span><script src=[!--news.url--]e/public/ViewClick?classid=[!--classid--]&id=[!--id--]&addclick=1></script>人浏览</span><span>来自互联网</span></p></div></dd>
</dl>';
调用条数
$limit=5;//最多调用条数
$tbname=$class_r[$r[classid]][tbname];//获取数据表
$infotags=$empire->gettotal("select infotags as total from {$dbtbpre}ecms_".$tbname."_data_{$r[stb]} where id='$r[id]'");//查询副表下的infotags字段
$tags=empty($infotags)?"无":preg_replace("/(,?)([^,]+)/","<a href='{$public_r[newsurl]}e/tags/?tagname=$2' target='_blank'>$2</a> ",$infotags,$limit);
if(strstr($tags,',')) $tags=strstr($tags,',',true);         
$listtemp=' <d...';
#T=【批量王】 图片字段批量生成缩率图
$batf='titlepic';
include_once ECMS_PATH.'e/class/gd.php';
if(!$r[$batf])continue;
$filename=basename($r[$batf]);
$fr=$empire->fetch1("select * from {$dbtbpre}enewsfile_{$r[fstb]} where classid='$r[classid]' and id='$r[id]' and filename='$filename' limit 1");
if(!$fr[id])continue;
$path=$fr['path']?$fr['path'].'/':$fr['path'];
$fspath=ReturnFileSavePath($fr['classid'],$fr['fpath']);
$smallname=eReturnEcmsMainPortPath().$fspath['filepath'].$path.'small'.basename($r[$batf]);
if(is_file($smallname))continue;
$filetype=GetFiletype($fr[filename]);
$insertfile=substr($fr[filename],0,strlen($fr[filename])-strlen($filetype));
$yname=eReturnEcmsMainPortPath().$fspath['filepath'].$path.basename($r[$batf]);
if(!is_file($yname))continue;
$smallname=substr($smallname,0,strlen($smallname)-strlen($filetype));
$maxwidth=$public_r[spicwidth];
$maxheight=$public_r[spicheight];
GetMySmallImg($r[classid],$fr[no],$insertfile,$fr[path],$yname,$maxwidth,$maxheight,$smallname,$r[id],$fr[cjid],$userid,$username,$fr[modtype],$r[fstb]);
$listtemp='';
#T=【批量王】- 复制关键词字段到tags字段
感谢楼上朋友们的关注。
批量王的批量修改字段值是二次开发的利器。
比如,批量复制关键词字段到tags字段,只需要以下代码写到模板,就能轻松搞定。
$tags = explode(",", $r[keyboard]);
$mid = (int)$class_r[$r[classid]][modid]; //获取模型id
foreach ($tags as $tag) {
    if (strstr(',' . $r['infotags'] . ',', ',' . $tag . ',')) continue; //已经有了
    $r['infotags'] = ltrim($r['infotags'].',' . $tag,',');
    $tagid = $empire->gettotal("select tagid as total from {$dbtbpre}enewstags where tagname='$tag' limit 1");
    if ($tagid) {
        $empire->query("update {$dbtbpre}enewstags set num=num+1 where tagid='$tagid'");
    } else {
        $empire->query("insert into {$dbtbpre}enewstags(tagname,num,isgood,cid) values('$tag',1,0,0);");
        $tagid = $empire->lastid();
    }
    $empire->query("insert into {$dbtbpre}enewstagsdata(tagid,classid,id,newstime,mid) values('$tagid','$r[classid]','$r[id]','$r[newstime]','$mid');");
}
$listtemp = 'infotags';
#T=【批量王】- 批量提取关键词
以下代码写到模板,可以批量提取关键词:
$encode = 'utf-8';
$title = rawurlencode(strip_tags($r[title]));
$content = strip_tags($r[content]);
if (strlen($content) > 2400) { //在线分词服务有长度限制
    $content = mb_substr($content, 0, 800, $encode);
}
$content = rawurlencode($content);
$url = 'http://keyword.discuz.com/related_kw.html?title=' . $title . '&content=' . $content . '&ics=' . $encode . '&ocs=' . $encode;
$xml_array = simplexml_load_file($url);
$result = $xml_array->keyword->result;
$data = array();
foreach ($result->item as $key => $value) {
    $newkw = (string)$value->kw;
    if ($newkw && !strstr(',' . $r[keyboard] . ',', ',' . $newkw . ',')) {
        $r[keyboard] .= ',' . $newkw;
    }
}
$r[keyboard]=ltrim($r[keyboard],',');
$listtemp="keyboard";
#T=分页 -上一篇下一篇
<!--上一篇-->
[e:loop={'selfinfo',1,0,0,'id<'.$navinfor[id].'','id desc'}]
<a href="<?php
echo $bqsr[titleurl];
$pre='true';
?>">上一篇:<?=$bqr[title]?>
</a>
[/e:loop]
<?php
if(emptyempty($pre)){
echo "上一篇:很抱歉没有了";
}
?>
<!--下一篇-->
[e:loop={'selfinfo',1,0,0,'id>'.$navinfor[id].'','id asc'}]
<a href="<?php
echo $bqsr[titleurl];
$next='true';
?>">下一篇:<?=$bqr[title]?>
</a>
[/e:loop]
<?php
if(emptyempty($next)){
echo "下一篇:很抱歉没有了";
}
?> 
<?php
$add[id]=150;
$jhcNextInfo=$empire->fetch1("select * from {$dbtbpre}ecms_news where id>{$add[id]} order by id asc limit 1");
$jhcNextLink=sys_ReturnBqTitleLink($jhcNextInfo);
$nextpage='<a href="'.$jhcNextLink.'" class="linkpage">下一篇</a>';
echo $nextpage.PHP_EOL;
$jhcPreInfo=$empire->fetch1("select * from {$dbtbpre}ecms_news where id<{$add[id]} order by id desc limit 1");
$jhcPreLink=sys_ReturnBqTitleLink($jhcPreInfo);
$prepage='<a href="'.$jhcPreLink.'" class="linkpage">上一篇</a>';
echo $prepage;
?>
#T=百度 - 推送链接
$urls = array(
    'http://www.example.com/1.html',
    'http://www.example.com/2.html'
);
$api = 'http://data.zz.baidu.com/urls?site=www.zhongyf.com&token=f7KxxUKFXnbHaikU';
$ch = curl_init();
$options =  array(
    CURLOPT_URL => $api,
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS => implode("n", $urls),
    CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
echo $result;
#T=百度互联
/*
百度互联 地址 http://developer.baidu.com/console#app/project
开发帮助 http://developer.baidu.com/wiki/index.php?title=%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3%E9%A6%96%E9%A1%B5/%E7%99%BE%E5%BA%A6%E5%B8%90%E5%8F%B7%E8%BF%9E%E6%8E%A5
*/
#T=百度收录查询
<?php
function checkBaidu($url) {
    $url = 'http://www.baidu.com/s?wd=' . $url;
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $rs = curl_exec($curl);
    curl_close($curl);
    if (strpos($rs, '很抱歉,没有找到与')) {
     return 0;
    } else {
     return 1;
    }
}
echo checkBaidu('http://www.zhongyf.com/books/shiyo5ngshu/nyzhx2/97928.html');
?> 
#T=本周热点
/*
本周热点排行之类的sql标签 
[ecmsinfo]"select * from phome_ecms_news where newstime>SUBDATE(NOW(),INTERVAL 7 DAY) order by onclick desc limit 10",10,30,0,24,7,0[/ecmsinfo]
[e:loop={"select * from {$dbtbpre}ecms_news where FROM_UNIXTIME(newstime)>SUBDATE(NOW(),INTERVAL 7 DAY)  order by onclick desc limit 10",0,24,0}]
<a href="<?=$bqsr['titleurl']?>" target="_blank"><?=$bqr['title']?></a> <br>
[/e:loop]
或者 newstime>UNIX_TIMESTAMP()-86400*7
*/
#T=变量 - 扩展 缓存 和不缓存
1、写入缓存的变量调用
在任意php或模板中用  $public_r['add_变量名']  可取得变量内容。
2、没有写入缓存的变量调用
可以用内置变量返回函数(数据库读取变量内容):ReturnPublicAddVar(变量名)。取多个变量内容可用逗号隔开,例子:
取得单变量内容:  $value=ReturnPublicAddVar('myvar'); //$value就是变量内容。
取得多个变量内容:  $value=ReturnPublicAddVar('myvar1,myvar2,myvar3'); //$value['myvar1']才是变量内容。
#T=变量- 过滤
/*
1)、数字型变量可以用(int)或intval函数处理,例子:
$page=(int)$_GET['page'];

$page=intval($_GET['page']);
(2)、带小数点的数字型变量可以用(float)或floatval函数处理,例子:
$money=(float)$money;

$money=floatval($money);
(3)、字符型处理:
不带空格或其他特殊符号的,用
RepPostVar()函数过滤
带空格或其他特殊符号的用:
RepPostVar2()函数过滤
写入数据库的用:
RepPostStr()函数过滤 
*/
#T=变量-显示
<?=$varname['editme']?>
#T=标题 - 颜色,bis
//标题属性后
function DoTitleFont($titlefont,$title){
    if(empty($titlefont))
    {
        return $title;
    }
    $r=explode(',',$titlefont);
    if(!empty($r[0]))
    {
        $title="<font color='".$r[0]."'>".$title."</font>";
    }
    if(empty($r[1]))
    {return $title;}
    //粗体
    if(strstr($r[1],"b"))
    {$title="<strong>".$title."</strong>";}
    //斜体
    if(strstr($r[1],"i"))
    {$title="<i>".$title."</i>";}
    //删除线
    if(strstr($r[1],"s"))
    {$title="<s>".$title."</s>";}
    return $title;
}
#T=标题链接
 $titleurl=sys_ReturnBqTitleLink($r);        //标题链接
#T=表单 - 验证
<?=$ecms_hashur['form']?>  // 记得要先赋值: $ecms_hashur=hReturnEcmsHashStrAll();
#T=错误提示
error_reporting(E_ALL ^ E_NOTICE);
#T=地址 - 内容页
/*语法:sys_ReturnBqTitleLink($r)
说明:$r为含“id,classid,newspath,filename,groupid,titleurl”字段内容的数组,变量名可任意命名。
使用范例:取得信息ID=8的新闻页面地址
<?php
$nr=$empire->fetch1("select id,classid,newspath,filename,groupid,titleurl from {$dbtbpre}ecms_news where id='8' limit 1");
$titleurl=sys_ReturnBqTitleLink($nr);
echo $titleurl;
?>
通过ID取得信息内容页地址的其他方法:
/e/public/InfoUrl/?classid=栏目ID&id=信息ID
*/
#T=帝国cms - php
<!--code.start-->?php
?<!--code.end-->
#T=帝国ecms常量和判定
define('InEmpireCMS',TRUE);
define('ECMS_PATH',substr(dirname(__FILE__),0,-7));
define('MAGIC_QUOTES_GPC',function_exists('get_magic_quotes_gpc')&&get_magic_quotes_gpc());
define('STR_IREPLACE',function_exists('str_ireplace'));
if(!defined('empirecms'))
{
    exit();
}
include_once(ECMS_PATH.'e/class/gd.php');
#T=帝国标签 - listsonclass
//循环子栏目数据进化版
function user_ForSonclassData($classid,$line,$strlen,$have_class=0,$enews=0,$tempid,$doing=0,$cline=0,$dofirstinfo=0,$fsubtitle=0,$fsubnews=0,$fdoing=0,$ewhere='',$eorder=''){
    global $empire,$public_r,$class_r,$class_zr,$navclassid,$dbtbpre;
    //多栏目
    if(strstr($classid,","))
    {
        $son_r=sys_ReturnMoreClass($classid);
        $classid=$son_r[0];
        $where=$son_r[1];
    }
    else
    {
        //当前栏目
        if($classid=="selfinfo")
        {
            $classid=$navclassid;
        }
        $where="bclassid='$classid'";
    }
        //jiuhecai edite
    $classwhere='';
    if($ewhere){
        $ewherer=explode(' and ',$ewhere);
        foreach($ewherer as $and){
            if(strstr($and,'classid in') || strstr($and,'classid not in')){
                $classwhere.=' and ('.$and.')';
            }
        }
    }
    $where.=$classwhere;
    //jiuhecai end
    //取得模板
    $tr=sys_ReturnBqTemp($tempid);
    if(empty($tr['tempid']))
    {return "";}
    $tr[temptext]=str_replace('[!--news.url--]',$public_r[newsurl],$tr[temptext]);
    $tr[listvar]=str_replace('[!--news.url--]',$public_r[newsurl],$tr[listvar]);
    //限制条数
    if($cline)
    {
        $limit=" limit ".$cline;
    }
    //字段
    $ret_r=ReturnReplaceListF($tr[modid]);
    //栏目字段
    if($dofirstinfo==1)
    {
        $addclassfield=',classname,classimg,intro';
    }
    $csql=$empire->query("select classid".$addclassfield." from {$dbtbpre}enewsclass where ".$where." and wburl='' order by myorder,classid".$limit);
    while($cr=$empire->fetch($csql))
    {
        sys_GetEcmsInfoMore($cr[classid],$line,$strlen,$have_class,$enews,$tr,$doing,$ret_r,$cr,$dofirstinfo,$fsubtitle,$fsubnews,$fdoing,$ewhere,$eorder);
    }
}
?>
#T=帝国标签 - 灵动标签 内容最新10条
[e:loop={'news',10,18,0,"id<{$navinfor[id]}"}]
<a href="<?=$bqsr['titleurl']?>" target="_blank"><?=$bqr['title']?></a> <br>
[/e:loop]
#T=帝国标签 - 自定仪统计标签 统计
http://www.jb51.net/article/50509.htm
//修改后的信息统计。$day参数11表示本年1月,12表示本年二月,...,22表示本年12月
function user_TotalData1($classid,$enews=0,$day=0,$totaltype=0,$tj=''){
        global $empire,$class_r,$class_zr,$dbtbpre,$fun_r,$class_tr;
        if(empty($classid))
        {
                return "";
    }
        //统计类型
        if($totaltype==1)//评论数
        {
                $totalfield='sum(plnum) as total';
        }
        elseif($totaltype==2)//点击数
        {
                $totalfield='sum(onclick) as total';
        }
        elseif($totaltype==3)//下载数
        {
                $totalfield='sum(totaldown) as total';
        }
     elseif($totaltype=="*")//信息数
        {
                $totalfield='count(*) as total';
        }
        elseif($totaltype=="morepic")//信息数
        {
               $totalfield='count(*) as total';
        }
    else//信息数
        {
                $totalfield="sum({$$totaltype}) as total";
        }
        if($day)
        {
                if($day==1)//今日信息
                {
                        $date=date("Y-m-d");
                        $starttime=$date." 00:00:01";
                        $endtime=$date." 23:59:59";
                }
                elseif($day==2)//本月信息
                {
                        $date=date("Y-m");
                        $starttime=$date."-01 00:00:01";
                        $endtime=$date."-".date("t")." 23:59:59";
                }
                elseif($day==3)//本年信息
                {
                        $date=date("Y");
                        $starttime=$date."-01-01 00:00:01";
                        $endtime=($date+1)."-01-01 00:00:01";
                }
                elseif($day>10)//本年某月信息
                {
                        $yue=$day-10;
                        $date=date("Y");
                        $starttime=$date."-".$yue."-01 00:00:01";
                        if($yue==12){$endtime=$date."-".$yue."-31 23:59:59";}else{$endtime=$date."-".($yue+1)."-01 00:00:01";}
                }
                $and=" and newstime>=".to_time($starttime)." and newstime<=".to_time($endtime);
        }
        if($enews==1)//统计标题分类
        {
                if(empty($class_tr[$classid][tbname]))
                {
                        echo $fun_r['BqErrorTtid']."=<b>".$classid."</b>".$fun_r['BqErrorNtb'];
                        return "";
                }
                $query="select ".$totalfield." from {$dbtbpre}ecms_".$class_tr[$classid][tbname]." where ttid='$classid'".$and;
    }
        elseif($enews==2)//统计数据表
        {
                $query="select ".$totalfield." from {$dbtbpre}ecms_".$classid.(empty($and)?'':' where '.substr($and,5));
    }
        else//统计栏目数据
        {
                if(empty($class_r[$classid][tbname]))
                {
                        echo $fun_r['BqErrorCid']."=<b>".$classid."</b>".$fun_r['BqErrorNtb'];
                        return "";
                }
                if($class_r[$classid][islast])//终极栏目
                {
                        $where="classid='$classid'";
                }
                else//大栏目
                {
                        $where=ReturnClass($class_r[$classid][sonclass]);
                }
                $query="select ".$totalfield." from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where ".$where.$and;
    }
       if($tj){$query.=" and ".$tj;}
    $num=$empire->gettotal($query);
        return $num;
}
#T=帝国常量 - ECMS_PATH
define('ECMS_PATH',substr(dirname(__FILE__),0,-7)); // 比如:D:qianke68shijianf10    ECMS_PATH
获取网站根目录
<?php
define("WWWROOT",str_ireplace(str_replace("/","",$_SERVER['PHP_SELF']),'',__FILE__)."");
echo WWWROOT ;
?>
#T=帝国函数 - 网站物理地址
eReturnTrueEcmsPath()  //包含在 require('../../class/connect.php'); //引入数据库配置文件和公共函数文件
#T=帝国函数 字段处理函数 自定义
http://www.moke8.com/article-13326-1.html
#T=帝国函数- ehash
//ehash
$ecms_hashur=hReturnEcmsHashStrAll();
/*  whehref - 问号-帝国- 地址
"youname.php{$ecms_hashur['whehref']}"
*/
#T=动态权限 - 开启
define('EmpireCMSAdmin','1'); //如果开启了“关闭前台所有动态页面”选项,二次开发的文件头部加这个才能确保文件可以访问
#T=二开 - 安装锁
if(file_exists("install.off"))
{
    echo"《帝国网站管理系统》安装程序已锁定。如果要重新安装,请删除<b>/e/install/install.off</b>文件!";
    exit();
}
#T=服务器 - 定时重启
如果需要重起服务器命令是  
iisreset  /reboot  重起计算机
以下命令写bat文件中,可以定时重启服务
echo off  关闭 回显
date /t >>d:hl.txt
time /t >>d:hl.txt
iisreset /restart   >>d:hl.txt
net stop MSSQLSERVER  >>d:hl.txt
net start MSSQLSERVER  >>d:hl.txt
net stop MySQL  >>d:hl.txt
net start MySQL   >>d:hl.txt
#T=服务器 - 远程桌面
mstsc /v 222.76.210.107:4054  /console
#T=复选字段取值
$f=explode("|",$r[zhiye]);
$listtemp='第一个值:'.$f[0].',模板内容';
#T=过滤变量
<?php/*
1)、数字型变量可以用(int)或intval函数处理,例子:
$page=(int)$_GET['page'];

$page=intval($_GET['page']);
(2)、带小数点的数字型变量可以用(float)或floatval函数处理,例子:
$money=(float)$money;

$money=floatval($money);
(3)、字符型处理:
不带空格或其他特殊符号的,用
RepPostVar()函数过滤
带空格或其他特殊符号的用:
RepPostVar2()函数过滤
写入数据库的用:
RepPostStr()函数过滤 
4.url过滤
<?=RepPostStrUrl($_SERVER['HTTP_REFERER'])?>  // 就是用了ehtmlspecialchars过滤,并且把&amp;换回来
*/
?>
#T=缓存 - 副表字段判断
if(strstr($emod_r[$modid]['tbdataf'],','.$f.','))//副表
#T=会员 - 调用会员信息
$myuserid=(int)getcvar('mluserid'); 
<?php
$userr=sys_ShowMemberInfo($myuserid,'');
?>
#T=会员- 获取会员信息
<?php
$myuserid=(int)getcvar('mluserid');
$username =getcvar('mlusername');
$money=$empire->gettotal("select money as total from ".eReturnMemberTable()." where ".egetmf('userid')."='$myuserid' limit 1"); 
#T=简介字段 - smalltext - 过滤字符
简介字段的替换
[!--smalltext--] 改写为
<?=str_replace(array('&amp;','middot;','&ldquo;','&rdquo',' ',' '), "",$navinfor[smalltext])?>
<?=$bqr[smalltext]?>
参看网站:http://www.0744tv.com/health/xywy/136893.html
站长在正常情况下录入文章的时间一般是不会单独手动真写smalltext简单内容的,在正常的情况下,帝国会自动提取正文内容里的前部分文字为简介,
但有时候正文里有特殊的字符,这样就会导致自动提取简介的时候会产生&rdquo;,其实是帝国没有完成过滤掉特殊的字符,解决办法如下
打开文件e/class/connect.php
找到函数 sub($string,$start=0,$length,$mode=false,$dot='')
将其中的代码
$string = str_replace(array('&nbsp;','&amp;','&quot;','&lt;','&gt;','&#039;'), array(' ','&','"','<','>',"'"), $string);
替换为
$string = str_replace(array('&nbsp;','&amp;','&quot;','&lt;','&gt;','&#039;','&ldquo;','&rdquo;'), array(' ','&','"','<','>',"'",'“','”'), $string);
解析:帝国默认的截取替换函数没有对双引号起作用,这里加上就解决了这个了,因此如遇到其它类似情况在这里添加要替换的字符和替换后的字符即可。 
本篇文章来源于源码库(www.aspku.com),转载请注明出处 原文链接:http://www.aspku.com/cms/diguocms/38491.html
列表模板中,[!--smalltext--]内容简介含有代码,怎么解决? 帝国cms - 安全、强大、稳定、灵活
http://bbs.phome.net/showthread-13-122089-0.html
http://bbs.phome.net/ShowThread/?threadid=338529&forumid=13
#T=结合项 - 净化url
function beautifyUrl($allstr){
    preg_match_all ('/<a href="(.*?)".*?>(.*?)</a>/i',$allstr,$matches);
    foreach($matches[1] as $url){
        $parts = parse_url($url);
        parse_str($parts['query'],$query);
        $newurl = $parts['path'].'?'.http_build_query($query);
        $allstr = str_replace('href="'.$url.'"', 'href="'.$newurl.'"',  $allstr);
    }    
    return  $allstr;   
}
#T=块注释
/*
*/
#T=栏目 - 遍历
[e:loop={"select * from {$dbtbpre}enewsclass where classid in (82,83,86,87,88,89,90,91,93) order by myorder asc",0,24,0}]
<li><a href="<?=$bqsr[classurl]?>"><?=$bqr[classname]?></a></li>
[/e:loop]
#T=栏目 - 地址和id
$GLOBALS[navclassid]
/*
帝国cms内容页面获取当前栏目链接地址方法:
<?
$r['classid']=$GLOBALS[navclassid];
$classurl=sys_ReturnBqClassname($r,9);
echo $classurl;
$classurl=sys_ReturnBqClassname($r,1);
?>
其他方法:/e/public/ClassUrl/?classid=栏目ID  ,还有就是用 <?=$class_r[栏目ID]['classpath']?>
灵动标签内栏目地址:<?=$bqsr[classurl]?>
内容页地址:<?=$bqsr[titleurl]?>
*/
#T=栏目 - 和子栏目
     <?php
$bclassid=$GLOBALS[navclassid]; //取得本栏目id
?>
[e:loop={"select classid,classname,classpath from [!db.pre!]enewsclass where bclassid='$bclassid' order by classid desc ",0,24}]
<li><a href="<?=$class_r[$bqr[classid]]['classpath']?>"><?=$class_r[$bqr[classid]]['classname']?></a></li>[/e:loop]
遍历一级栏目和子栏目
   <?foreach($class_r as $lm){
if($lm[bclassid]==0){$bclassid=$lm[classid];
echo '<li><a href="'.$lm['classpath'].'">'.$lm['classname'].'</a></li>';
?>
[e:loop={"select classid from [!db.pre!]enewsclass where bclassid='$bclassid' order by classid desc ",0,24}]
<li><a href="<?=$class_r[$bqr[classid]]['classpath']?>"><?=$class_r[$bqr[classid]]['classname']?></a></li>
[/e:loop]
<?
}
}?>
或者更加简洁的
  <?foreach($class_r as $lm){
    if($lm[bclassid]==0){
        echo '<li><a href="'.$lm['classpath'].'">'.$lm['classname'].'</a></li>';
        foreach($class_r as $lm1){
            if($lm1[bclassid]==$lm[classid]){
            echo '<li><a href="'.$lm1['classpath'].'">'.$lm1['classname'].'</a></li>'; 
        }
        }
    }
}?>
#T=栏目 - 名别名父栏目
/*
栏目名:<?=$class_r[栏目ID]['classname']?>   比如列表模版内容:$class_r[$r[classid]][classname]
栏目别名:<?=$class_r[栏目ID]['bname']?>
父栏目:<?=$class_r[栏目ID]['bclassid']?>
#T=栏目 - 信息总数
$tbname=$class_r[$navclassid][tbname];
$jiuhecainum=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_{$tbname} where classid={$navclassid}");
更准确的:
<?php
     $classid=$navclassid;
    $tbname=$class_r[$classid][tbname];
     $myid= sys_ReturnMoreClass($classid,1);
     $_POST['jhcnum']=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_{$tbname}  where $myid[1] ");
   ?>
#T=栏目 - 子集
ReturnClass($class_r[$trueclassid][sonclass])  // classid in 格式。 比如:
*/
#T=栏目- 表结构 -字段
DROP TABLE IF EXISTS `phome_enewsclass`;
CREATE TABLE `phome_enewsclass` (
  `classid` smallint(5) unsigned NOT NULL auto_increment,
  `bclassid` smallint(5) unsigned NOT NULL default '0',
  `classname` varchar(50) NOT NULL default '',
  `sonclass` text NOT NULL,
  `is_zt` tinyint(1) NOT NULL default '0',
  `lencord` smallint(6) NOT NULL default '0',
  `link_num` tinyint(4) NOT NULL default '0',
  `newstempid` smallint(6) NOT NULL default '0',
  `onclick` int(11) NOT NULL default '0',
  `listtempid` smallint(6) NOT NULL default '0',
  `featherclass` text NOT NULL,
  `islast` tinyint(1) NOT NULL default '0',
  `classpath` text NOT NULL,
  `classtype` varchar(10) NOT NULL default '',
  `newspath` varchar(20) NOT NULL default '',
  `filename` tinyint(1) NOT NULL default '0',
  `filetype` varchar(10) NOT NULL default '',
  `openpl` tinyint(1) NOT NULL default '0',
  `openadd` tinyint(1) NOT NULL default '0',
  `newline` int(11) NOT NULL default '0',
  `hotline` int(11) NOT NULL default '0',
  `goodline` int(11) NOT NULL default '0',
  `classurl` varchar(200) NOT NULL default '',
  `groupid` smallint(6) NOT NULL default '0',
  `myorder` smallint(6) NOT NULL default '0',
  `filename_qz` varchar(20) NOT NULL default '',
  `hotplline` tinyint(4) NOT NULL default '0',
  `modid` smallint(6) NOT NULL default '0',
  `checked` tinyint(1) NOT NULL default '0',
  `firstline` tinyint(4) NOT NULL default '0',
  `bname` varchar(50) NOT NULL default '',
  `islist` tinyint(1) NOT NULL default '0',
  `searchtempid` smallint(6) NOT NULL default '0',
  `tid` smallint(6) NOT NULL default '0',
  `tbname` varchar(60) NOT NULL default '',
  `maxnum` int(11) NOT NULL default '0',
  `checkpl` tinyint(1) NOT NULL default '0',
  `down_num` tinyint(4) NOT NULL default '0',
  `online_num` tinyint(4) NOT NULL default '0',
  `listorder` varchar(50) NOT NULL default '',
  `reorder` varchar(50) NOT NULL default '',
  `intro` text NOT NULL,
  `classimg` varchar(255) NOT NULL default '',
  `jstempid` smallint(6) NOT NULL default '0',
  `addinfofen` int(11) NOT NULL default '0',
  `listdt` tinyint(1) NOT NULL default '0',
  `showclass` tinyint(1) NOT NULL default '0',
  `showdt` tinyint(1) NOT NULL default '0',
  `checkqadd` tinyint(1) NOT NULL default '0',
  `qaddlist` tinyint(1) NOT NULL default '0',
  `qaddgroupid` text NOT NULL,
  `qaddshowkey` tinyint(1) NOT NULL default '0',
  `adminqinfo` tinyint(1) NOT NULL default '0',
  `doctime` smallint(6) NOT NULL default '0',
  `classpagekey` varchar(255) NOT NULL default '',
  `dtlisttempid` smallint(6) NOT NULL default '0',
  `classtempid` smallint(6) NOT NULL default '0',
  `nreclass` tinyint(1) NOT NULL default '0',
  `nreinfo` tinyint(1) NOT NULL default '0',
  `nrejs` tinyint(1) NOT NULL default '0',
  `nottobq` tinyint(1) NOT NULL default '0',
  `ipath` varchar(255) NOT NULL default '',
  `addreinfo` tinyint(1) NOT NULL default '0',
  `haddlist` tinyint(4) NOT NULL default '0',
  `sametitle` tinyint(1) NOT NULL default '0',
  `definfovoteid` smallint(6) NOT NULL default '0',
  `wburl` varchar(255) NOT NULL default '',
  `qeditchecked` tinyint(1) NOT NULL default '0',
  `wapstyleid` smallint(6) NOT NULL default '0',
  `repreinfo` tinyint(1) NOT NULL default '0',
  `pltempid` smallint(6) NOT NULL default '0',
  `cgroupid` text NOT NULL,
  `yhid` smallint(6) NOT NULL default '0',
  `wfid` smallint(6) NOT NULL default '0',
  `cgtoinfo` tinyint(1) NOT NULL default '0',
  `bdinfoid` varchar(25) NOT NULL default '',
  `repagenum` smallint(5) unsigned NOT NULL default '0',
  `keycid` smallint(6) NOT NULL default '0',
  `allinfos` int(10) unsigned NOT NULL default '0',
  `infos` int(10) unsigned NOT NULL default '0',
  `addtime` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`classid`),
  KEY `bclassid` (`bclassid`)
) TYPE=MyISAM;
#T=栏目- 名称和别名
/*
帝国CMS栏目别名的调用方法详解 帝国cms - 安全、强大、稳定、灵活
http://bbs.phome.net/ShowThread/?threadid=291071&forumid=13
灵动标签调用:[e:loop={"select bname from {$dbtbpre}enewsclass where classid='$GLOBALS[navclassid]'",1,24,0}]<?=$bqr[bname]?>[/e:loop]
[e:loop={"select bname,classimg from {$dbtbpre}enewsclass where bclassid='{$class_r[$GLOBALS[navclassid]][bclassid]}'",0,24}]<?=$bqr[bname]?>[/e:loop]
*/
#T=栏目- 批量转移
帝国后台,栏目->栏目管理 - 其他相关 - 批量转移信息
#T=列表 - 结合项-url
/*
http://www.phpin.net/thread-39-1-1.html
*/
优化
<?php
$allstr='<a href="/e/action/ListInfo.php?&classid=1248&tempid=37&ph=1&indexx=%CB%F7%D2%FD&peorid=%BF%B9%C8%D5&zbclass=%C8%D5%CE%B1&area=%C4%FE%CF%C4&sc1=J" class="fieldandcss">J</a> ';
function jhcUrl($allstr){
    preg_match_all ('/<a href="(.*?)".*?>(.*?)</a>/i',$allstr,$matches);
    for($i=0;$i<count($matches[1]);$i++){
         $url = $matches[1][$i];
         $parts = parse_url($url);
         $query = explode('&', $parts['query']);
         $output=array();
         foreach ($query as $key => $value) {
            if($value){
                $params = explode('=', $value);
                if($params[0]){
                    $output[$params[0]]=urldecode($params[1]);
                }
            }
         }
         foreach($output as $key=>$value){
        if(!$value)unset($output[$key]);
        if($key='tempid')unset($output[$key]);
     }
         if($output['indexx'])$output['tempid']=37;
     $newurl = $parts['path'].'?'.http_build_query($output);
          $allstr = str_replace('href="'.$url.'"', 'href="'.$newurl.'"',  $allstr);
    }
    return  $allstr;   
}
echo jhcUrl($allstr);
?>
#T=列表 - 结合项筛选总数 -num
/*
http://bbs.phome.net/showthread-13-86160-0.html
*/
结合查询结果里,如何调出查询结果的信息条数,[!--num--]调不出?如何调用?
找不到办法,也许隐藏在某处。
只好,动刀
文件:e/action/listinfo.php
下边这一段
我加了一句
看注释
------------------------
//公共
$listtemp=str_replace('[!--newsnav--]',$url,$listtemp);//位置导航
$listtemp=Class_ReplaceSvars($listtemp,$url,$pageclassid,$pagetitle,$pagekey,$pagedes,$classimg,$addr,$pageecms);
$listtemp=str_replace('[!--page.stats--]','',$listtemp);
$listtemp=str_replace('[!--show.page--]',$listpage,$listtemp);
$listtemp=str_replace('[!--show.listpage--]',$listpage,$listtemp);
$listtemp=str_replace('[!--list.pageno--]',$page+1,$listtemp);
$listtemp=str_replace('[!--user.num--]',$num,$listtemp); // 我加的这一句
//取得列表模板
----------------------
这样在列表模版里,可用[!--user.num--] 获得筛选的条数。
#T=列表页 - listvar - 使用函数
//结束日期与当日的时间戳差值
if(!function_exists('time_cha')) { 
function time_cha($thetime)
{
    $t=date("Y-m-d",time());//当日日期
    $cha=strtotime($thetime)-strtotime($t);
    return $cha;
}
}
$bmdays=time_cha($r[bmjs_time]);
if($bmdays<0)
{ $station="已过期";}else $station="报名中";
$listtemp='<tr><td class="title"><div><a href="[!--this.classlink--]" class="cate">[[!--this.classname--]]</a> <a href="[!--titleurl--]">[!--title--]</a></div></td>
<td class="popular">'.$station.'</td><td class="update">[!--newstime--]</td><td class="size">[!--test_type--]</td></tr>';
#T=列表页 - 评论列表页字段调用
<?=$n_r[信息字段名]?> 
#T=列表页 - 总记录数
修改 /e/class/functions.php 查找
$num=$empire->gettotal($totalquery);
共有两处,在此后添加
$_POST['listpagenum']=$num;
#T=列表页- listvar -使用变量
global $jhcno;
$jhcno++;
#T=目录层次-声明
$editor=1; //声明目录层次 
/* 此变量如果没有使用printerror()等函数可以不设置。
默认$editor变量为0。
当程序文件在/e/path/目录,$editor不用设置,也就是用默认0。
当程序文件在/e/path/path2/目录,$editor=1。
当程序文件在/e/path/path2/path3/目录,$editor=2。
当程序文件在/e/path/path2/path3/path4/目录,$editor=3。  */
#T=内容页- 插入广告
假定  新闻模型,自定义字段为adid; 内容中插入的广告标记为[!jiuhacaiad!],保存广告的栏目id为75
这里的特色是专门建立一个栏目保存广告。
内容模板:[!--newstext--] 替换为以下代码
<? 
if(!$navinfor[adid]){
    //此处从数据库中查询到adid广告,对应的内容字符串,比如结果为$adstring;
    /*代码可能为: 
        $classid=75; 
        $tbname=$class_r[$classid][tbname];
        $ad=$empire->fetch1("select * from {$dbtbpre}ecms_{$tbname}  where classid ={$classid} and  id=$navinfor[adid] limit 1");
        $adstring=$ad[你的字段1].$ad[你的字段2];
       */
    $navinfor[newstext]= str_replace([!jiuhacaiad!],$adstring,$navinfor[newstext]);
}
echo $navinfor[newstext];
 ?>
#T=内容页- 分页数
<?php
$pg=explode("
相关文章
猜你需要