首页 > 其他 > 网站日记>正文

帝国cms代码片段备忘录

提示: 阅读权限:公开  
#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("[!--empirenews.page--]",$navinfor[newstext]);
$pgcount=count($pg);
?>
内容分页数量:<?=$pgcount?>

#T=权限 - 验证
//验证权限
CheckLevel($logininid,$loginin,$classid,"totaldata");
/*  http://www.zhongyf.com/qita/rj/2015-10-24/97501.html 这里有权限检测代码大全 */
#T=全局变量-函数内声明
global $empire,$public_r,$dbtbpre;
#T=日期时间-格式化
<?=date('Y-m-d',$r[newstime])?>
<?php echo gmstrftime('%H时%M分%S秒',$bqr['shichang']); ?>
#T=手机端 - 跳转
<script type=”text/javascript”>
if(!(/pc=1/i.test(window.location.search)) && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent))window.location = window.location.href.replace(/www.zhongyf.com/,'m.zhongyf.com');
</script>
#T=数据表 - 投稿数
[e:loop={'select * from (SELECT userid, username, COUNT( userid ) AS total FROM phome_ecms_news where (ismember = 1) AND (newstime > 1388709198) and userid in (select m.userid from phome_enewsmember m  left join phome_enewsmembergroup g on m.groupid=g.groupid where g.groupid=1 ) GROUP BY userid,username) t order by total desc',10,24,1,'',''}]
未审核:<?$bqr[nocheck]=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_news_check where ismember=1 and userid='$bqr[userid]'");echo $bqr[nocheck];?>
未审核+合计:<?=$bqr[nocheck]+$bqr[total]?>


<li>
<table>
<tr>
<td width="78px" height="35px" style="border-bottom:1px dashed #ccc; text-indent:-40px;" align="center" ><?=$bqno?></td>
<td width="78px" height="35px" style="border-bottom:1px dashed #ccc;" align="center"><?=$bqr[username]?></td>
<td width="78px" height="35px" style="border-bottom:1px dashed #ccc;" align="center"><?=$bqr[total]?></td>
</tr>
</table>
</li>
[/e:loop]
#T=数据库 - left join -会员表
"select ".$fields." from ".eReturnMemberTable()." u LEFT JOIN {$dbtbpre}enewsmemberadd ui ON u.".egetmf('userid')."=ui.userid where u.".egetmf('userid')."='$uid' limit 1"
#T=数据库 - mysql日期函数大全
1.当日
select * from [!db.pre!]ecms_news where newstime>UNIX_TIMESTAMP(curdate())
2.一周内
[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]
3.7日内
UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 7 DAY));
4.历史上的今天
<?
date_default_timezone_set(PRC);
$yue=date("n");
$ri=date("j");
?>

[e:loop={0,10,3,0,"month(FROM_UNIXTIME(newstime))=$yue and day(FROM_UNIXTIME(newstime))=$ri"}]

<li>
<a href="<?=$bqsr['titleurl']?>" target="_blank"><?=$bqr['title']?></a>

</li>
[/e:loop]

或者
<?php
$biaoName=$dbtbpre."请在这里输入表名,不用带前缀,比如:ecms_news";
$jieguo="";
$h = $empire->fetch1("select FROM_UNIXTIME(unix_timestamp(),'%m%d') as jieguo");

echo $h[jieguo];
?>
#T=数据库 - SQL随机快速
<!--code.start-->?php
require('../class/connect.php'); //引入数据库配置文件和公共函数文件 
require('../class/db_sql.php'); //引入数据库操作文件 
$link=db_connect(); //连接MYSQL 
$empire=new mysqlquery(); //声明数据库操作类 

?<!--code.end-->
<!--code.start-->?php
$sql="SELECT * FROM {$dbtbpre}ecms_news AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM {$dbtbpre}ecms_news )-(SELECT MIN(id) FROM {$dbtbpre}ecms_news))+(SELECT MIN(id) 
FROM {$dbtbpre}ecms_news )) AS id) AS t2 WHERE t1.id >= t2.id ORDER BY t1.id LIMIT 1"; 
$str="";
$rid=array();
$i=0;
while($i<10){
$nr= $empire->fetch1($sql);
$titleurl=sys_ReturnBqTitleLink($nr);
if(in_array($nr['id'], $rid)){
 
} else {
 $str=$str."<li><a href='".$titleurl."' title='".$nr['title']."'>".$nr['title']."</a></li> ";
 $rid[]=$nr['id'];
$i=$i+1;
 }

}
db_close(); //关闭MYSQL链接
$empire=null; //注消操作类变量
echo $str;
?<!--code.end-->
另外一种方法:
$sql="select group_concat(id) as total from {$dbtbpre}ecms_news where title regexp '尿床' "; 
$idset=$empire->gettotal($sql);

$ids='';
$dh='';
$allids=explode(',',$idset);
// $hl=shuffle($allids);
$limit=min(10,count($allids));
$jhc=array_rand($allids,$limit);
foreach($jhc as  $key=>$value){$ids.=$dh.$allids[$value];$dh=',';}
echo $ids;
#T=数据库 - sql最新信息
   <?php
    $classid=111;
    $tbname=$class_r[$classid][tbname];
    $newbook=$empire->query("select * from {$dbtbpre}ecms_{$tbname}  where classid ={$classid} order by newstime desc limit 1");
   
    while($yf=$empire->fetch($newbook)) {
    ?>
		<div class="zhongyf"><a href="<?=sys_ReturnBqTitleLink($yf)?>" target="_blank"><img alt="<?=$yf[title]?>" src="<?=$yf[titlepic]?>"><?=$yf[title]?></a></div>

    <?php
     }
    ?> 
#T=数据库 - 标题图片修复
update  [!db.pre!]ecms_news a,[!db.pre!]enewsfile_1 b set a.titlepic=concat(substring_index(a.titlepic,'small',1),b.filename) where a.id=b.id and 
a.classid=b.classid and locate(concat('small',substring_index(a.titlepic,'small',-1)),b.filename)>0
#T=数据库 - 点击数清0
执行sql语句:update phome_ecms_表 set onclick=0 where 条件;
#T=数据库 - 函数 mysql字符个数
    select (length(name)-length(REPLACE(name, 'fei', '')))/length('fei') from user
#T=数据库 - 会员积分
// jiuhecai  add begin
$hongfen=2;
$sql="update ".eReturnMemberTable()." a,{$dbtbpre}enewsmemberadd b set a.".egetmf('userfen')."=a.".egetmf('userfen')."+'$hongfen'";
$where=" where a.".egetmf('userid')."='$r[userid]' and b.".egetmf('userid')."='$r[userid]' and to_days(now())<>to_days(from_unixtime(b.lasttime))";
$empire->query($sql.$where);
//jiuhecai add end
#T=数据库 - 跨库访问

[e:loop={"select uid,username from bbs.bbs_common_member where avatarstatus!=0 order by uid desc limit 6",0,24}]
#T=数据库 - 跨数据库调用
帝国CMS灵动标签SQL调用任意数据表数据(例如Discuz,PHPwind) 帝国cms - 安全、强大、稳定、灵活
http://bbs.phome.net/showthread-31-353180-0.html
#T=数据库 - 去掉字段里的汉字
update 表名 set 字段名=replace(replace(convert(replace(字段名,'?','jiuhecailove') using ascii) ,'?',''),'jiuhecailove','?');
#T=数据库 - 统计推荐数
[e:loop={"select count(*) as mynum from {$dbtbpre}ecms_news where isgood>0",0,24,0}]<?=$bqr[mynum]?>[/e:loop]
#T=数据库 - 自定义连接
<?php

$keyword=urldecode($_GET["keyword"]);
echo($keyword);
if(strlen($keyword)<2){echo "please input keywords!";} else{
$conn=mysql_connect("localhost","root","kj02fei");
mysql_query("SET NAMES 'utf8'", $conn);
mysql_select_db("sq8zhongyf");
$sql="SELECT * FROM phome_ecms_news_data_1";
echo($sql);

$result=mysql_query($sql);
while($row=mysql_fetch_array($result)){
	if(strpos($row["newstext"],$keyword)>0){
	
	echo $row["id"]." ok!<br />";
	}
 
}
mysql_close($conn);
}

?>
#T=数据库 SQL文中取图
update [!db.pre!]ecms_news_data_1 a, [!db.pre!]ecms_news b set b.titlepic=concat(replace(SUBSTRING_INDEX(SUBSTRING_INDEX(a.newstext,  'src=',  -1),'.jpg',1),'"',''),'.jpg')  where  a.newstext  like  '%.jpg%'  and  b.titlepic='' and a.id=b.id;
// 提取第一张图片
update [!db.pre!]ecms_news_data_1 a, [!db.pre!]ecms_news b set b.titlepic=concat(replace(SUBSTRING_INDEX(SUBSTRING_INDEX(a.newstext,  '.jpg',  1),'src=',-1),'"',''),'.jpg')  where  a.newstext  like  '%.jpg%'  and  b.titlepic='' and a.id=b.id;

#T=数据库 SQL语句拾贝
update [!db.pre!]ecms_news_data_1 a, [!db.pre!]ecms_news b set b.keyboard=a.infotags where a.id=b.id and b.keyboard='';//把tag复制到关键词
update [!db.pre!]ecms_news set onclick=onclick+增加数量; //批量增加点击数量
#T=数据库- 反馈表
$rzip=egetip();
$inum=$empire->gettotal("select count(*) as total from {$dbtbpre}enewsfeedback where ip='$rzip' and date_format(saytime,'%Y-%m-%d') = date_format(now(),'%Y-%m-%d')");
if($inum){
    echo printerror2("IP".$rzip."今日已发一条反馈!");
    exit;  //  date_format(saytime,'%Y-%m-%d') =curdate()  , or   to_days(saytime) =to_days(now())  , or date(saytime) =curdate()
}

#T=数据库--打开
require('../../class/connect.php'); //引入数据库配置文件和公共函数文件
require('../../class/db_sql.php'); //引入数据库操作文件
require("../../class/functions.php"); //引入基本函数库文件
require('../../data/dbcache/class.php'); //引入栏目缓存文件
$link=db_connect(); //连接MYSQL
$empire=new mysqlquery(); //声明数据库操作类
$editor=1; //声明目录层次 
/*
函数需结合$editor变量来确定目录层次。默认$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=数据库--关闭
db_close(); //关闭MYSQL链接
$empire=null; //注消操作类变量
#T=数据库-取多条记录
$sql=$empire->query("select * from {$dbtbpre}ecms_news");
while($r=$empire->fetch($sql))
{
        echo"标题:".$r['title']."<br>";
}
#T=数据库-取一条记录
$rs=$empire->fetch1($sql);
#T=数据库-全局变量
global $empire;
#T=图片 - 返回图片地址
//文件
	$fspath=ReturnFileSavePath($r[classid],$r[fpath]);
	$filepath=$r[path]?$r[path].'/':$r[path];
	$file=$fspath['fileurl'].$filepath.$r[filename];
#T=图片 - 图集
<?php 
$arr = array(); 
$arr = $navinfor['morepic']; 
$newarr = explode(egetzy('rn'),$arr); 
$count = count(explode(egetzy('rn'),$navinfor[morepic]));//图集的图片数量
for($i=0;$i<$count;$i++) 
{ 
$s_arr = array(); 
$s_arr[] = $newarr[$i]; 
$str = $s_arr[0]; 

$bot_arr = explode("::::::", $str); 
$spic = $bot_arr[0];//小图 
$bpic = $bot_arr[1];//大图 
$picinfo = $bot_arr[2];//图片说明 
echo '<img src="'.$spic.'" data-large="'.$bpic.'" alt="'.$picinfo.'" width="65" height="65" />'; 
} 
?>

morepic 属于图片集多值字段,通常在附表。第一分隔符rn,可以用egetzy('rn')代替 ,第二分隔符::::::(6个冒号)


jiuhecai 的发明,用正则来写

<?
preg_match_all("/(.*)::::::(.*)::::::(.*)/",$navinfor['morepic'],$morepic);
?>
<li><div class="pic"><a href=""><img class="vcenter" src="<?=$morepic[2][0]?>" alt="<?=$morepic[3][0]?>" /></a></div></li> 
<li><div class="pic"><a href=""><img class="vcenter" src="<?=$morepic[2][1]?>" alt="<?=$morepic[3][0]?>" /></a></div></li> 
<li><div class="pic"><a href=""><img class="vcenter" src="<?=$morepic[2][2]?>" alt="<?=$morepic[3][0]?>" /></a></div></li>

#T=图片- 缩率图 - 调用小图
<?php

$r['titlepic']="/d/file/dianzibao/yuandan/20170528/2e3c1e1725c040bc93a23c1feb511d42.jpg";

echo dirname($r['titlepic']).'/small'.basename($r['titlepic']);
?>

or:

<?$pos=strrpos($bqr['titlepic'],'/');echo substr($bqr['titlepic'],0,$pos).'/small'.substr($bqr['titlepic'],$pos+1,strlen($bqr['titlepic']));?>
#T=图片- 提取
$pattern="/<[img|IMG].*?src=['|"](.*?(?:[.gif|.jpg]))['|"].*?[/]?>/"; 
$preg  = "/<[img|IMG].*?src=['|"](.*?(?:[.gif|.jpg]))['|"].*?[/]?>/i";

#T=图片- 统计图片数
function totalimg($day){  //统计图片数
global $empire,$dbtbpre;
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";
        }
        $and=" newstime>=".to_time($starttime)." and newstime<=".to_time($endtime);
    }
$query="select count(*) as total from {$dbtbpre}ecms_photo where ".$and;
$num=$empire->gettotal($query);
if(!empty($num)){
$tj=$empire->query("select morepic from {$dbtbpre}ecms_photo_data_1 limit $num");
while($rs=$empire->fetch($tj)) {
    $morepic=$rs['morepic'];
    $rexp=egetzy('rn');
    $rr=explode($rexp,$morepic);
    $count+=count($rr);
}
echo $count;
}
else{echo 0;}
}
#T=图片集 - 大小图 数量
<?php
$picr=explode(egetzy('rn'),$navinfor[morepic]);
for($p=0;$p<count($picr);$p++)
{
$pic=explode("::::::",$picr[$p]);// 0缩略图,1大图,2图片名称
?>
<li data-sPic="<?=$pic[1]?>">     <img src="<?=$pic[0]?>">   </li>
<?php
}
?> 
内容模板调用图集数量:

<?
$pic=explode(egetzy("rn"),$navinfor[morepic]);
echo count($pic);
?>
<?php

$morepic_num=empty($navinfor[morepic])?0:count(explode(chr(13),$navinfor[morepic]));

echo $morepic_num;

?>
#T=图像处理 - 资源
$file=fopen("f.txt","r");   //打开文件
$con=mysql_connect("localhost","root","root");  //连接数据库
$img=imagecreate(100,100);//图形画布
#T=网站关键词
$pr=$empire->fetch1("select sitekey,siteintro,indexpagedt from {$dbtbpre}enewspublic limit 1");
		if($pr['indexpagedt']||(Moreport_ReturnMustDt()&&!defined('ECMS_SELFPATH')))//moreport
		{
			return '';
		}
		//页面
		$pagetitle=ehtmlspecialchars($public_r['sitename']);
		$pagekey=ehtmlspecialchars($pr['sitekey']);
		$pagedes=ehtmlspecialchars($pr['siteintro']);
#T=网站缩略图
http://api.webthumbnail.org/?width=480&height=330&screen=1280&url=www.a1hyz.com
#T=文件 打开fopen
//首先采用“fopen”函数打开文件,得到返回值的就是资源类型。
$file_handle = fopen("/data/webroot/resource/php/f.txt","r");
if ($file_handle){
    //接着采用while循环(后面语言结构语句中的循环结构会详细介绍)一行行地读取文件,然后输出每行的文字
    while (!feof($file_handle)) { //判断是否到最后一行
        $line = fgets($file_handle); //读取一行文本
        echo $line; //输出一行文本
        echo "<br />"; //换行
    }
}
fclose($file_handle);//关闭文件
#T=文件- 导入
/*
导入栏目、专题、标题分类缓存文件:/e/data/dbcache/class.php
导入会员组缓存文件:/e/data/dbcache/MemberLevel.php
导入标签函数文件:/e/class/t_functions.php
导入编译标签文件:/e/class/functions.php 
*/
#T=文件-引入-包含
require("setup.php");

require(ECMS_PATH.'e/template/incfile/header.php');
#T=文件下载 - 代码
<?php
$file = '.'.'/d/txt/123453.txt';
 // $out_filename = $r['title'].'.txt';
$down_name="武林外传123.txt";
if(!file_exists($file)){
	echo '没有找到' .$down_name;
	exit;
} 
else
{
	$fp = fopen($file,"r");
	$file_size = filesize($file);
	//下载文件需要用到的头
	header("Content-type: application/octet-stream");
	header("Accept-Ranges: bytes");
	header("Accept-Length:".$file_size);
	header("Content-Disposition: attachment; filename=".$down_name);
	$buffer = 1024;
	$file_count = 0;
	 //向浏览器返回数据 
	 while(!feof($fp) && $file_count < $file_size){
	  $file_con = fread($fp,$buffer);
	  $file_count += $buffer;
	  echo $file_con;
	 } 
	 fclose($fp);

	exit;
}
?>
或者
<?php
$filename = '.'.'/d/txt/123453.txt';
 // $out_filename = $r['title'].'.txt';
$out_filename="武林外传123.txt";
if(!file_exists($filename)){
	echo '没有找到' .$out_filename;
	exit;
} 
else
{
	@header("Content-Type: application/force-download");
	@header("Content-Disposition: attachment; filename=".$out_filename);
	$file = @fopen($filename, "r");
	echo @fread($file, @filesize($filename));
	@fclose($file);
	exit;
}
?>
#T=销毁cookie和session
//销毁SESSION和COOKIE
function exterminate() {
	$_SESSION = array();
	foreach ( $_COOKIE as $key ) {
		setcookie($key, null);
	}
	session_destroy();
	$_COOKIE = array();
    return true;
}
#T=页面 - 自定义
[e:loop={"select *,b.classname as classname from [!db.pre!]enewspage a left join [!db.pre!]enewspageclass b on a.classid=b.classid",0,24}]
<?echo $bqr[title],'...'.$bqr[classname].'</br>';?>
[/e:loop]
#T=移动信息 - 删除原信息文件

移动后删除信息文件的修正:

在文件/e/class/hinfofun.php的函数

//移动信息
function MoveNews_all($classid,$id,$to_classid,$userid,$username){


中,查找


//返回表信息
$infotbr=ReturnInfoTbname($tbname,$index_r['checked'],$r['stb']);

在其后增加语句:


	//jiuhecai add 删除信息文件,未审核的因为没有信息文件,所以不用删除
        if($index_r['checked']){
			$mid=$class_r[$classid][modid];
			$pf=$emod_r[$mid]['pagef'];
			$stf=$emod_r[$mid]['savetxtf'];
			if($pf)
			{
				if(strstr($emod_r[$mid]['tbdataf'],','.$pf.','))
				{
					$jhcr=$empire->fetch1("select ".$pf." from {$dbtbpre}ecms_".$tbname."_data_".$r[stb]." where id='{$id[$i]}'");
					$r[$pf]=$jhcr[$pf];
				}
				if($stf&&$stf==$pf)//存放文本
				{
					$r[$pf]=GetTxtFieldText($r[$pf]);
				}
			}
			DelNewsFile($r[filename],$r[newspath],$r[classid],$r[$pf],$r[groupid]);
		}
		//jiuhecai end

即可。

进一步 随后的语句中

//更新信息附加表
		UpdateSingleInfoOtherData($r['classid'],$id[$i],$to_classid,$r,0,0);
		//jiuhecai add  生成新的信息表
		GetHtml($to_classid,$id[$i],'',0,1);
		//jiuhecai end

这样处理后,就可以生成新的信息了。

#T=用户- 验证
//验证用户
$lur=is_login();
$logininid=$lur['userid'];
$loginin=$lur['username'];
$loginrnd=$lur['rnd'];
$loginlevel=$lur['groupid'];
$loginadminstyleid=$lur['adminstyleid'];

#T=友情链接js

自定义JS

select lname as title,lurl as titleurl from  [!db.pre!]enewslink where classid=1 order by lid

然后JS模板

[!--empirenews.listtemp--]<li><a href="[!--titleurl--]" title="[!--title--]">[!--title--]</a></li>[!--empirenews.listtemp--]
#T=语言包 - 导入
require ECMS_PATH.'e/data/'.LoadLang('pub/fun.php'); 
/*
导入语言包文件地址是相对于 ../data/language/ 目录,例子:
(1)、如果程序文件在/e/extend/目录,比如:/e/extend/a.php,则导入语言包可以用:
require LoadLang('pub/fun.php');
(2)、如果程序文件在/e/extend/helloworld/目录,比如:/e/extend/helloworld/a.php,则导入语言包可以用:
require '../'.LoadLang('pub/fun.php');
(3)、如果程序文件在根目录,比如:/a.php,则导入语言包可以用:
require ECMS_PATH.'e/data/'.LoadLang('pub/fun.php'); 
*/
#T=找不见的操作
修改栏目目录后要重新更新信息页地址:后台-系统-数据更新-更新信息页地址
#T=专题 - 灵动标签
帝国CMS内置的专题调用标签总是不理想,调用不方便,还是灵动标签调用来得方便实在。
代码:

[e:loop={'select ztid,ztname,ztimg,maxnum,intro,onclick,ztpath from [!db.pre!]enewszt where showzt=1 order by ztid limit 8',10,24,0}]
<li>
<div class="i"><a href="<?=$public_r[newsurl]?><?=$bqr[ztpath]?>" target="_blank"><img src="<?=$bqr[ztimg]?>" alt="<?=$bqr[ztname]?>" width="150px" height="100px" /></a></div>
<div class="t"><a href="<?=$public_r[newsurl]?><?=$bqr[ztpath]?>" target="_blank"><?=$bqr[ztname]?></a></div>
<div class="s"><?=$bqr[intro]?></div>
<div class="s"><span class="l"><?=$bqr[onclick]?>次点击</span><span class="fr"><?=$bqr[maxnum]?>首</span></div>
</li>
[/e:loop]

 enewszt 为专题表,要调用专题什么信息就查询什么字段。

showzt=1 为专题分类ID,如要调用多个专类分类, showzt=1 改成:showzt in(1,2,3,4,5,6,7)

 

 
#T=专题 - 专题地址 专题字段
专题地址用:/<?=$class_zr[$GLOBALS[navclassid]][ztpath]?> 

使用内置调用专题自定义字段函数:ReturnZtAddField(专题ID,字段名),专题ID=0为当前专题ID。取多个字段内容可用逗号隔开,例子:
取得'classtext'字段内容:$value=ReturnZtAddField(0,'classtext'); //$value就是字段内容。
取得多个字段内容:$value=ReturnZtAddField(1,'ztid,classtext'); //$value['classtext']才是字段内容。
#T=自定义页面
/*
帝国CMS使用技巧之调用自定义页面

我们做单页(比如“公司介绍”、“联系我们”等页面)时一般采用自定义页面来做,而调用出自定义页面导航可以用标签SQL调用。如下:

<!--调用自定义页面分类ID=1的页面导航-->
[e:loop={'select id,path,title from [!db.pre!]enewspage where classid=1 order by id limit 20',24}]
	<?php
		$pageurl=$public_r['newsurl'].str_replace('../../','',$bqr['path']);
	?>
	<li><a href="<?=$pageurl?>"><?=$bqr[title]?></a></li>
[/e:loop]


例子2:调用自定义页面导航并识别当前自定义页面
[e:loop={'select id,path,title from [!db.pre!]enewspage where classid=1 order by id limit 20',0,24}]
	<?php
		$pageurl=$public_r['newsurl'].str_replace('../../','',$bqr['path']);
		$css='pagecss';
		if($classid=='page'.$bqr[id])
		{
			$css='selfpagecss';
		}
	?>
	<li class="<?=$css?>"><a href="<?=$pageurl?>"><?=$bqr[title]?></a></li>
[/e:loop]


#T=字段 - 存文本 - 读取
<?php
if($emod_r[$mid]['savetxtf']&&$emod_r[$mid]['savetxtf']==$f)//存文本
{
	$val=stripSlashes(GetTxtFieldText($val));
}
?>
#T=字段 - 用灵动复杂读取
[e:loop={34,1,0,0}]
	<?php 
		$f='newstext';
		$mid=$class_r[$bqr[classid]][modid];
		$tbdataf=$emod_r[$mid][tbdataf];
		if(strstr($tbdataf,','.$f.',')){
		    $tbname="{$dbtbpre}ecms_{$class_r[$bqr[classid]][tbname]}_data_{$bqr[stb]}";
		}else{
		    $tbname="{$dbtbpre}ecms_{$class_r[$bqr[classid]][tbname]}";
		}

		$fr=$empire->fetch1("select newstext from $tbname where id='$bqr[id]'");?>
		<?
		if($emod_r[$mid]['savetxtf']&&$emod_r[$mid]['savetxtf']==$f)//存文本
			{
				$fr[newstext]=GetTxtFieldText($fr[newstext]);
			}
		echo esub(stripslashes($fr[newstext]),10000)
	?>
[/e:loop]
#指定栏目或者当前栏目下随机信息

<?php
	$classid=1; //指定id,当前为 $navclassid
	$limit=7; // 七条
	$tbname='news';
	list(,$classids)=sys_ReturnMoreClass($classid,1);
	$ids=$empire->gettotal("select group_concat(id) as total from {$dbtbpre}ecms_{$tbname} where $classids");
	$idsr=explode(',',$ids);
	$max=count($idsr)-1;
	$ids=array();
	$i=0;
	while($i<$limit){
	   $key=rand(0,$max);
	   if(array_key_exists($key,$ids))continue;
	   $ids[$key]=$idsr[$key];$i++;
	}
	$rand=implode(',',$ids);
?>
 [e:loop={"select * from {$dbtbpre}ecms_{$tbname} where id in($rand) limit $limit",0,24}]
	<a href="<?=$bqsr['titleurl']?>"><?=$bqr[title]?></a>
 [/e:loop]

 #数据库插入
 function r2sql($r)
    $jhc='';
    foreach($r as $key=>$value){if(!is_numeric($key))$jhc.=$key."='".$value."',";}
    return rtrim($jhc,',');
}
#t=print
printerror2("DbError","history.go(-1)");
#t=tags
$infotagsr=explode(',',$r['infotags']);
$r[title]=addslashes($r[title]);
$sql=$empire->query("select tagname,tagid from {$dbtbpre}enewstags where locate(tagname,'$r[title]')>0");
while($jhcr=$empire->fetch($sql)){
   if(in_array($jhcr[tagname],$infotagsr))continue;
   $infotagsr[]=$jhcr[tagname];
   $empire->query("update {$dbtbpre}enewstags set num=num+1 where tagid='$jhcr[tagid]'");
   $classid=(int)$r[classid];   
   $mid=(int)$class_r[$classid][modid]; 
   $empire->query("insert into  {$dbtbpre}enewstagsdata set tagid={$jhcr[tagid]},classid=$classid,id={$r[id]},newstime='$r[newstime]',mid=$mid");
}
$r['infotags']=trim(implode(',',$infotagsr),',');
$listtemp='infotags';

#sql union
"SELECT titlepic AS  titlepic,yuyan AS yuyan FROM www_jiuxz_com_ecms_azsoft where title like '%$guanjianci%' UNION SELECT titlepic AS  titlepic,yuyan AS yuyan FROM www_jiuxz_com_ecms_azgame where title like '%$guanjianci%'"
# js 判断js是否屏蔽
<div  id="NoJs" >你禁用了javascript。你真操蛋!我要给你看公告</div>  
<script>document.getElementById("NoJs").style.display="none"; </script>
#字段函数
//取第一段为简介
function user_getfirstP($mid='',$f='',$isadd='',$isq='',$value='',$cs=''){
	global $navinfor;
	$newstext=$navinfor['newstext'];
	if(!$newstext)$newstext=$_POST['newstext'];
	$newstext=stripslashes($newstext);
	$tempr=explode('</p>',$newstext,2);
	return strip_tags($tempr[0].'</p>');
}	


上一篇:帝国CMS7.2版到7.5版升级步骤及常见问题说明

下一篇:帝国cms插件如何兼容gbk和utf8

tags: 帝国cms 代码 片段 备忘录

返回首页

相关

热门

站内直通车

[!--temp.bottomnav--]
返回顶部