模板使用说明与技巧


模板使用说明与技巧导航
1、按SQL语句查询调用说明 2、让标签参数支持系统变量
3、标签调用记录范围小技巧 4、本月热点排行的sql条件调用
5、开启模板支持程序代码说明 6、下载不采用弹出窗口式说明
7、文章内容加环饶广告 8、在内容页面直接显示评论
9、帝国CMS程序扩展变量说明 10、模板中遇到\如何处理?
11、为什么页面不统计点击数? 12、用帝国CMS做英文站需要改什么?
13、控制面板“[!--empirenews.template--]”样式修改 14、为什么[!--writer--]不能在列表中调用?
15、如何用灵动标签调用副表字段内容? 16、如何在列表模板或标签模板中调用副表字段内容?
17、如何调用指定某一条信息的内容? 18、比较高效的随机调用方法
19、模板备份份数在哪修改? 20、如何调用各级头条和推荐?
21、用PHP代码实现灵动标签的技巧 22、为什么查看源文件有内容,但页面显示空白?
23、截取字数加省略号的方法 24、SQL调用非终极栏目处理技巧


1、按SQL语句查询调用说明
1、标签上面的“操作类型”参数要设为24,然后“栏目id”参数为SQL语句
2、开启支持按SQL语句调用,默认是开启的,如果没有开启:打开e/class/config.php文件进行配置(粗体文字的设置)
//部分参数设置
$do_theloginlog=0; //是否记录登陆日志(0为记录,1为不记录)
$do_thedolog=0; //是否记录操作日志(0为记录,1为不记录)
$do_openbqquery=1; //开启标签支持sql语句查询(0为不支持,1为开启)
$do_openreadfile=0; //开启支持读取本地文件,为了安全,一般情况请不要开启(0为不支持,1为开启)
$do_txtpath="../../d/txt/"; //文本型数据存放目录
$saveurlimgclearurl=1; //远程保存图片自动去除图片的链接(0为保留,1为去除)
$ecmsdeftempid=0; //默认模板组ID
3、调用例子。以ecmsinfo为例:
[ecmsinfo]"select * from phome_ecms_news where classid=1 order by id desc limit 10",10,30,0,24,1,0[/ecmsinfo]

注:显示栏目ID为1的10条新闻表记录



2、让标签参数支持系统变量
让标签参数支持系统变量说明:以实现按各种条件调用信息数据。
根据程序扩展变量的说明得出我们可以在标签参数中直接使用“字段值数组”变量。

例如:我们要列出所有信息来源相同的10条信息,标签如下(按sql语句调用):
[phomenews]"select * from phome_ecms_news where befrom='".$navinfor[befrom]."' order by id desc limit 10",10,32,0,24,0[/phomenews]
附加说明:$navinfor[字段名]


3、标签调用记录范围小技巧
如只调用从第10条开始的后20条记录
我们可以把显示条数改为:'10,20',以万能标签为例子(当然所有标签都一样):
[ecmsinfo]栏目ID/专题ID,'10,20',标题截取数,是否显示栏目名,操作类型,模板ID,只显示有标题图片[/ecmsinfo]


4、本月热点排行的sql条件调用
只需设置标签“附加SQL条件”参数为:'newstime>UNIX_TIMESTAMP()-86400*30'

以ecmsinfo标签为例:
[ecmsinfo]0,10,30,0,4,7,0,'newstime>UNIX_TIMESTAMP()-86400*30'[/ecmsinfo]

注意红色部分:
30是指30天。



5、开启模板支持程序代码说明
1.开启:参数设置-》信息设置

2.这样直接在模板加上php代码就会受系统编译了。如果不想被编译,把程序代码直接加到页面里面:
"<"用"<!--code.start-->"表示
">"用"<!--code.end-->"表示

例如:<?  echo"Hello!";?>
那加到模板代码就是:<!--code.start-->?  echo"Hello!";?<!--code.end-->


6、下载不采用弹出窗口式说明

如果不采用弹出式下载的话,可依以下步骤完成:

1.修改下载地址模板("公共模板" -> "修改下载地址模板"):
将:
[ <a href=#edown onclick="window.open('[!--down.url--]','','width=300,height=300');">[!--down.name--]</a> ]
改成:
[ <a href="/e/DownSys/GetDown/?classid=[!--classid--]&id=[!--id--]&pathid=[!--pathid--]">[!--down.name--]</a> ]

2.开启直接下载开关:
后台-》参数设置-》模型设置:“开启直接下载”

3.重新刷新下载表的页面即可(记得选择刷新全部)

此方案缺点:起不到防盗链作用,如果你服务器本身就有防盗效果,才推荐使用此方式.



7、文章内容加环饶广告

<div id="ad">[phomead]广告ID[/phomead]</div>

<style type="text/css">
<!--
#ad {
float: right;
}
-->
</style>



8、在内容页面直接显示评论
内容模板增加评论JS调用:<script src="[!--news.url--]e/pl/more/?classid=[!--classid--]&id=[!--id--]&num=10"></script>
其中10为调用评论数量,显示样式修改:后台-》模板管理-》公共模板-》修改“评论JS调用模板”。


9、帝国CMS程序扩展变量说明
程序扩展变量说明:通过这些变量可实现各种更复杂的系统.
1、列表/封面模板变量说明:
当前栏目id:$GLOBALS[navclassid]

通过这个变量可以输出这个栏目id的所有数据(如:select * from phome_enewsclass where classid='$GLOBALS[navclassid]')

2、内容模板变量说明:

字段值数组:$navinfor

调用方法:$navinfor[字段名],比如要显示"信息ID字段",那在模板里用:<?=$navinfor[id]?>即可输出(要开启模板支持程序代码)



10、模板中遇到\如何处理?
单个\用四个\表示即可,如:\r用\\\\r表示即可。6.6以上版本还可以用转义字符函数egetzy()


11、为什么页面不统计点击数呢?
要统计页面访问率,需在内容模板底部加上“[!--page.stats--]”变量
用户在模板那边选择是否增加此变量(如下载系统中一般不统计访问量,不加此变量就不会统计了)

如果你是用动态显示点击数的话,用这个即可:(显示+统计)
<script src="[!--news.url--]e/public/ViewClick/?classid=[!--classid--]&id=[!--id--]&addclick=1"></script>



12、用帝国CMS做英文站需要改什么?
1.修改e/data/langauge/gb/pub/目录下的q_message.php与fun.php语言包文件为英文;
2.前台调用用ecmsinfo万能标签或灵动标签。


13、控制面板“[!--empirenews.template--]”样式修改
如果只是改表格颜色,修改模板CSS文件:/skin/default/css/style.css文件里的:
-----------------------------------
.header {
background: #E9F2FB url(../images/title_bg.gif) repeat-x left top;
color: #07519A;
border: 1px solid #AACCEE;
border-bottom: none;
}
.header a { color: #000000 }
.tableborder { background: #E1EFFB; border: 1px solid #AACCEE }
-----------------------------------

如果要修改表格框架修改e/template目录下的模板文件即可,如控制面板首页改:e/template/member/cp.php



14、为什么[!--writer--]不能在列表中调用?
默认新闻模型把writer和befrom字段存放在副表,要在列表中调用要先把这两个字段转移到主表(管理字段页面点副表转移),转移后修改模型选择这两个字段为列表模板项就可以用[!--字段名--]调用。


15、如何用灵动标签调用副表字段内容?
原理:在灵动标签循环内用SQL读取副表内容。下面以读取新闻副表中的newstext字段为例:
[e:loop={0,1,3,0}]
<?php
$fr=$empire->fetch1("select newstext from {$dbtbpre}ecms_news_data_{$bqr[stb]} where id='$bqr[id]'");
?>

标题:<?=$bqr[title]?><br>
副表内容字段:<?=$fr[newstext]?>
[/e:loop]


16、如何在列表模板或标签模板中调用副表字段内容?
列表模板中要调用副表字段内容需要采用“list.var支持程序代码”。下面以读取新闻副表中的newstext字段为例的list.var模板代码:
$fr=$empire->fetch1("select newstext from {$dbtbpre}ecms_news_data_{$r[stb]} where id='$r[id]'");
$listtemp='<a href="[!--titleurl--]">[!--title--]</a> <br>副表内容字段:'.$fr[newstext].'<br><br>';


17、如何调用指定某一条信息的内容?
标签附加SQL条件参数设置:'id=信息ID'即可。
以ecmsinfo标签为例:
[ecmsinfo]0,10,30,0,3,7,0,'id=5'[/ecmsinfo]


18、比较高效的随机调用方法
比较高效的随机调用方法:http://bbs.phome.net/showthread-13-169058-0.html


19、模板备份份数在哪修改?
后台>“系统”>“参数设置”>“信息设置”:“模板备份记录数”。
在每个模板下面的“[修改记录]”链接,可以还原修改记录。


20、如何调用各级头条和推荐?
“二级头条”调用:标签附加SQL条件参数设置为:'firsttitle=2'
“四级推荐”调用:标签附加SQL条件参数设置为:'isgood=4'


21、用PHP代码实现灵动标签的技巧
帝国CMS用PHP代码实现灵动标签的技巧:http://bbs.phome.net/showthread-13-146819-0.html


22、为什么查看源文件有内容,但页面显示空白?
答:是因为你的HTML代码不良写法导致,修改模板将“<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />”移到“<title>[!--pagetitle--]</title>”上面即可解决。


23、截取字数加省略号的方法
一般截取字数用
<?=esub($bqr[title],32)?>

加省略号你改成这个就可以了
<?=esub($bqr[title],32,'...')?>



24、SQL调用非终极栏目处理技巧

SQL语句调用要指定终极栏目ID,如果不想手动指定多个终极栏目ID,可以用下面方法:
select * from [!db.pre!]ecms_news where checked=1 and ".($class_r[$GLOBALS[navclassid]][islast]?"classid='$GLOBALS[navclassid]'":ReturnClass($class_r[$GLOBALS[navclassid]][sonclass]))." order by newstime desc limit 10