模板使用说明与技巧
本文目录- 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-->"表示
例如:[var1]
<? echo"Hello!";?>
那加到模板代码就是:<!--code.start--><!--code.end-->
<!--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>
[var1]
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字段",那在模板里用:[var1]即可输出(要开启模板支持程序代码)
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、比较高效的随机调用方法
看不少人喜欢用ORDER BY RAND()随机调用,随机调用是最耗资源的一种调用方式,信息数在1万以上随机调用就开始影响速度。使用时建议慎之又慎。
如果确实要使用,可以用下面思路:
先用php随机出信息ID,然后SQL调用用id in (php随机的ID列表)
<?php
$randnum=10; //随机数量
$randids='';
$randdh='';
for($i=1;$i<=$randnum;$i++)
{
$randids.=$randdh.rand(1,100000); //1为最小ID,100000为最大ID
$randdh=',';
}
?>
[e:loop={栏目ID,显示条数,操作类型,只显示有标题图片,"id in ($randids)"}]
模板代码内容
[/e:loop]
19、模板备份份数在哪修改?
后台>“系统”>“参数设置”>“信息设置”:“模板备份记录数”。
在每个模板下面的“[修改记录]”链接,可以还原修改记录。
20、如何调用各级头条和推荐?
“二级头条”调用:标签附加SQL条件参数设置为:'firsttitle=2'
“四级推荐”调用:标签附加SQL条件参数设置为:'isgood=4'
21、用PHP代码实现灵动标签的技巧
灵动标签实际对应的原型PHP代码为如下:
<?php
$ecms_bq_sql=sys_ReturnEcmsLoopBq(栏目ID/专题ID,显示条数,操作类型,只显示有标题图片,附加SQL条件,显示排序);
$bqno=0;
while($bqr=$empire->fetch($ecms_bq_sql))
{
$bqsr=sys_ReturnEcmsLoopStext($bqr);
$bqno++;
?>
模板代码内容
<?php
}
?>
怎么做能实现标签无限嵌套的效果?下面举例:
<?php
$ecms_bq_sql=sys_ReturnEcmsLoopBq(栏目ID/专题ID,显示条数,操作类型,只显示有标题图片,附加SQL条件,显示排序);
$bqno=0;
while($bqr=$empire->fetch($ecms_bq_sql))
{
$bqsr=sys_ReturnEcmsLoopStext($bqr);
$bqno++;
?>
<?php
$ecms_bq_sql2=sys_ReturnEcmsLoopBq(栏目ID/专题ID,显示条数,操作类型,只显示有标题图片,附加SQL条件,显示排序);
$bqno2=0;
while($bqr2=$empire->fetch($ecms_bq_sql2))
{
$bqsr2=sys_ReturnEcmsLoopStext($bqr2);
$bqno2++;
?>
模板代码内容2 <?=$bqr2[title]?>
<?php
}
?>
模板代码内容 <?=$bqr[title]?>
<?php
}
?>
二次嵌套,还可以加三次、四次...,由上可以看出通过PHP代码是可以实现标签无限嵌套,只要$ecms_bq_sql、$bqno、$bqr、$bqsr变量名改下就可以了。
22、为什么查看源文件有内容,但页面显示空白?
答:是因为你的HTML代码不良写法导致,修改模板将
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
移到
<title>[!--pagetitle--]</title>
上面即可解决。
23、截取字数加省略号的方法
一般截取字数用
<?=esub($bqr[title],32)?>
[var1]
加省略号你改成这个就可以了
<?=esub($bqr[title],32,'...')?>
[var1]
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