模板使用说明与技巧

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--><!--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>

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字段",那在模板里用:即可输出(要开启模板支持程序代码)

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)?>

加省略号你改成这个就可以了

<?=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
帝国CMS模板网 帝国CMS模板网(www.daixiao360.cn)长期承接帝国CMS模板定制,帝国CMS仿站,帝国CMS采集规则,帝国CMS插件,帝国CMS二次开发。