在日常建站过程中,整理了一些帝国ECMS常用技巧集
1、灵动标签调用栏目,可定义当前栏目的class样式:
[e:loop={"select classid,classname from {$dbtbpre}enewsclass where bclassid=5 and classid<>25 order by myorder,classid asc",0,24,0}]<?php
$classurl=sys_ReturnBqClassname($bqr,9);
$classname="";
if($bqr[classid]==$GLOBALS[navclassid])
{
$classname="tzzs_active";
}
?><li class="<?=$classname?>"><a href="<?=$classurl?>"><?=$bqr[classname]?></a></li>[/e:loop]
其中“classid<>25”为排除指定栏目
增加代码可不调用隐藏设置的栏目:and showclass=0
//0为显示,1为不显示
若在列表模板里,需要判断当前栏目的父栏目id,直接使用bclassid=[!--bclass.id--]
是无效的。
需要在页面顶部先获取父栏目的id数字才有效,代码如下:
<?php
$a=$GLOBALS[navclassid];
$b= $class_r[$a]['bclassid'];
?>
同时,灵动标签内bclassid=$b
来实现父栏目id的调用,该方法同时适用内容模板页面。
2、复选项输出值的调用
(讨论http://bbs.phome.net/ShowThread/?threadid=360510&forumid=42)
<?php
$shyashuasx=$navinfor[yashuasx];
$shyashuasx=rtrim($shyashuasx, "|");
$shyashuasx=ltrim($shyashuasx, "|");
$shyasarry = explode('|',$shyashuasx);
for($index=0;$index<count($shyasarry);$index++)
{
?>
<div class="fl feature">
<img src="[!--news.url--]skin/images/i/<?=$shyasarry[$index]?>.png" alt="<?=$shyasarry[$index]?>">
<br>
<?=$shyasarry[$index]?>
</div>
<?php
}
?>
3、列表内容模板,需要判断是否登录调用不同的内容
(讨论http://bbs.phome.net/ShowThread/?threadid=360336&forumid=42)
页面模板内容部分:
<?php
include("e/class/connect.php");
$lguserid=intval(getcvar('mluserid'));//登陆用户ID
$lgusername=RepPostVar(getcvar('mlusername'));//登陆用户
$lggroupid=intval(getcvar('mlgroupid'));//会员组ID
if($lggroupid){
?>
<div class="zinfo">“[!--class.name--]”共<em>[totaldata]$GLOBALS[navclassid],0,0[/totaldata]</em>条信息。欢迎<em><?php echo $lgusername;?></em>,用完记得<a href="/e/member/doaction.php?enews=exit">[退出]</a></div>
<?php
}else{
?>
<div class="zinfo">“[!--class.name--]”共<em>[totaldata]$GLOBALS[navclassid],0,0[/totaldata]</em>条信息。列表仅显示条数,请<a href="/e/member/login/" target="_blank">登录</a>刷新页面后,查看详细信息。</div>
<?php
}
?>
列表内容模板部分(使用程序代码)
include("e/class/connect.php");
$lguserid=intval(getcvar('mluserid'));//登陆用户ID
$lgusername=RepPostVar(getcvar('mlusername'));//登陆用户
$lggroupid=intval(getcvar('mlgroupid'));//会员组ID
if($lggroupid){
$listtemp='<li><a href="[!--titleurl--]"><img src="[!--titlepic--]" alt="[!--oldtitle--]" /><span>[!--title--]<span></a></li>';
}else{
$listtemp='<li><img src="/skin/images/p.png" alt="代用名" /><span>[<a href="/e/member/login/" target="_blank">登录后显示</a>]</span></li>';
}
4、结合项的信息数据统计
(讨论http://bbs.phome.net/showthread-42-360251-0.html)
模板变量:
<?php
$my_string=$class_r[$GLOBALS[navclassid]]['sonclass'];
$my_string=ltrim(rtrim($my_string, "|"), "|");
$my_string=str_replace("|",",",$my_string);
?>
<li class="t1">团员,共<em><?php $num=$empire->gettotal("select count(*) as total from phome_ecms_news where classid in($my_string) and shuxing='团员'");echo $num;?></em>人;</li>
5、灵动标签统计后台用户发布信息数量(同时排除不需要参与统计的用户)
[e:loop={"select id,username,count(*) as total from phome_ecms_news WHERE username<>'aijun' and username<>'admin' GROUP BY username ORDER BY total DESC LIMIT 0,10",0,24,0}]
<li><span><?=$bqr[total]?></span> <em><?=$bqno?></em> <?=$bqr[username]?></li>
[/e:loop]
6、标签模板使用程序代码,将时间分开调用(YY-MM-DD)
$y_time=date('Y',$r[newstime]);
$m_time=date('m',$r[newstime]);
$d_time=date('d',$r[newstime]);
$listtemp='<li><div class="ny_time"><em>'.$m_time.'-'.$d_time.'</em><br />'.$y_time.'</div></li>';
7、ECMS6.0版以后的验证码地址有所变化
评论验证码:/e/ShowKey/?v=pl
登陆验证码:/e/ShowKey/?v=login
注册验证码:/e/ShowKey/?v=reg
投稿验证码:/e/ShowKey/?v=info
留言板验证码:/e/ShowKey/?v=gbook
信息反馈验证码:/e/ShowKey/?v=feedback
取回密码验证码:/e/ShowKey/?v=getpassword
会员空间反馈验证码:/e/ShowKey/?v=spacefb
会员空间留言验证码:/e/ShowKey/?v=spacegb
验证码调用(可点击刷新):<img src='/e/ShowKey/?v=feedback' onclick='this.src="/e/ShowKey/?v=feedback&"+Math.random();' style='cursor:pointer;height:37px;'>
后台登录,点击显示验证码:<div id="checkkeyshowkey"><a href="#EmpireCMS" onclick="edoshowkey('checkkeyshowkey','checkkey');" title="点击显示验证码">点击显示</a></div>
8、[!--pagedes--]在内容页调用默认调用标题的无损解法:
通常大家可能会去修改functions.php,对以后升级会存在影响,为了SEO想了一个折中简单的办法。<meta name="description" content="<?=$navinfor[id]?$navinfor[smalltext].'---':''?>[!--pagedes--]" />
9、其他一些零散细节代码
⑴ 获取栏目网址:$classurl=sys_ReturnBqClassname($bqr,9);//取得栏目地址
⑵ 判断是否首页(用于高亮):<?=(!$GLOBALS[navclassid])?' class="cur"':''?>
⑶ 判断是否当前页(高亮):<?=($GLOBALS[navclassid]==$bqr[classid])?' class="cur"':''?>
⑷ 按照指定排序调用SQL语句片段(配合条件调用):order by field(classid,10,3,4,41,40)
⑸ 栏目导航中判断某栏目是否为终极栏目:if ($bqr[sonclass]=='' or $bqr[sonclass]=="|")
10、在PHP7.4上安装/运行的注意事项
⑴ 文件:e/config/config.php$ecms_config['db']['usedb']='mysql';
改为$ecms_config['db']['usedb']='mysqli';
⑵ 文件:e/class/connect.phpdefine('MAGIC_QUOTES_GPC',function_exists('get_magic_quotes_gpc')&&get_magic_quotes_gpc());
改为:define('MAGIC_QUOTES_GPC',(ini_get('magic_quotes_gpc') == 1) ? true : false);
说明:get_magic_quotes_gpc()在php5.4版之后已废除了
11、帝国CMS调用栏目别名的两种方法
第一种:在最终栏目调用
<?=$class_r[$GLOBALS[navclassid]][bname]?>
第二种:万能的,哪里都行,应为是直接查询数据库输出的!
<?php
$cr=$empire->fetch1("select bname from phome_enewsclass where
classid='".$GLOBALS[navclassid]."' limit 1");
echo $cr['bname'];
?>
12、判断当前页面为首页,是否首页高亮显示
<?php if(empty($GLOBALS[navclassid])){echo ' class="active"';}?>
说明:此判断会匹配首页,TAG页面和自定义页面,所以不想TAG页面和自定义页面也高亮,可以在TAG页面和自定义页面定义一个$GLOBALS[navclassid]。
逐步收集整理中...
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
写的很好,支持一下