本人对程序只能说是略知一二,做个小型网站只能用开源的cms系统,照着官方文档进行简单的套用。最近正学习帝国CMS系统,顺带将一些常用功能进行汇总,以便日后查看方便。感谢网络上愿意分享的各位网友。希望我这里的摘抄,也可以为后学者提供便利。
1、帝国cms内容详情页相关文章调用功能
<?php echo $navinfor[title]; $v= mb_substr($navinfor[title],0,4,'UTF-8');?> //获取当前文章标题,截取4个字符,并赋值给$v变量
[e:loop={"select * from phome_ecms_news where title like '%$v%' order by rand() desc limit 10",10,24,0}] //把$v加入到查询语句中,随机查询新闻表中title字段包含$v值的标题的文章,取出10条
<li><a href="<?=$bqsr['titleurl']?>" target="_blank">
<?=$bqr['title']?>
</a></li>
[/e:loop]
单纯使用灵动标签调用全标题匹配版本(没有相关文章的时候使用最新文章代替):
标题包含关键字
①、比较粗糙的匹配,可能不太精确:title like '%$navinfor[keyboard]%'
②、精确的匹配,比较消耗资源:title regexp '(^|,)$navinfor[keyboard]($|,)'
关键字相同
①、比较粗糙的匹配,可能不太精确:keyboard like '%$navinfor[keyboard]%'
②、精确的匹配,比较消耗资源:keyboard regexp '(^|,)$navinfor[keyboard]($|,)'
格式1、
①、模糊匹配
[e:loop={"select * from phome_ecms_news where title like '%$navinfor[keyboard]%' or keyboard like '%$navinfor[keyboard]%' order by id desc limit 10",0,24,0}]
[/e:loop]
②、精确的匹配
[e:loop={"select * from phome_ecms_news where title regexp '(^|,)$navinfor[keyboard]($|,)' or keyboard regexp '(^|,)$navinfor[keyboard]($|,)' order by id desc limit 10",0,24,0}]
[/e:loop]
格式2、
①、模糊匹配
[e:loop={'news',10,3,0,"keyboard like '%$navinfor[keyboard]%' or title like '%$navinfor[keyboard]%'",''}]
·
[/e:loop]
或
[e:loop={0,10,3,0,"keyboard like '%$navinfor[keyboard]%' or title like '%$navinfor[keyboard]%'",''}]
[/e:loop]
或
[e:loop={"select * from phome_ecms_news where classid={$ecms_gr['classid']} order by onclick desc limit 5",0,24,0,'',''}]
<li>
<div class="title"><a href="<?=$bqsr['titleurl']?>" target="_blank"><?=esub($bqr[title],32)?></a></div>
</li>
[/e:loop]
注意:在没有相关文章时,会调用最新的文章来替代空缺的位置
帝国CMS编辑器回车换成p标签
帝国CMS升级后的浏览器是CKEditor,但是在编辑文章的时候发现回车后键入的代码是</br>,大多数需求的是<pr>标签
文件在:\e\admin\ecmseditor\infoeditor\config.js;
把文件里面的原本代码:
config.enterMode = CKEDITOR.ENTER_BR;
config.shiftEnterMode = CKEDITOR.ENTER_P;
改成下面的代码:
config.enterMode = CKEDITOR.ENTER_P;
config.shiftEnterMode = CKEDITOR.ENTER_BR;
这样按enter就是<p>标识,按shift+enter就是<br>标识了;
帝国cms other.link 和otherlink使用说明
[!--other.link--]和[otherlink]标签模板ID,操作对象,调用条数,标题截取字数,是否显示栏目名,操作类型,只显示标题图片的信息[/otherlink]
相关文章标签:[otherlink]2,'',10,60,0,0,0[/otherlink] //好像就按标题的关键字 关联的,在发布文章的特殊属性那里。
相关文章标签:[!--other.link--] //好像是按找文章关键字 关联的,,,
[!--other.link--] 标签 在模板管理>公共模板>相关信息链接模板 处修改
要是进行跨表操作的时候用[otherlink]
但是值得注意的是用[otherlink]的操作类型是按栏目时,操作对象不支持'selfinfo',想要是本栏目下的相关链接要用$navinfor[classid]
例:[otherlink]3,$navinfor[classid] ,10,200,0,2,0[/otherlink] 这样写是对的
[otherlink]3,selfinfo ,10,200,0,2,0[/otherlink] 这样是错的
2帝国友链灵动标签
1、文字形式
[e:loop={'select * from [!db.pre!]enewslink where checked=1 and classid=1 order by myorder',20,24,0}]
<li><a href="<?=$bqr[lurl]?>" title="<?=$bqr[lname]?>" target="_blank"><?=$bqr[lname]?></a></li>
[/e:loop]
2、图片形式
[e:loop={'select * from [!db.pre!]enewslink where checked=1 and classid=1 order by lid',3,24,0}]
<li><a href="<?=$bqr[lurl]?>" title="<?=$bqr[lname]?>" target="_blank"><img src="<?=$bqr[lpic]?>"/></a></li>
[/e:loop]
或者
<ul class="links_text">
[e:loop={'select lname,lurl,lpic from [!db.pre!]enewslink where checked=1 order by myorder,lid',20,24,0}]
<li><a href="<?=$bqr[lurl]?>" target="_blank" ><?=$bqr[lname]?></a></li>
[/e:loop]
</ul>
(其中lname为站点名称字段,lurl为站点地址字段,lpic为站点图标地址字段)
(按某一分类调用SQL为:select lname,lurl,lpic from [!db.pre!]enewslink where checked=1 and classid=分类ID order by myorder,lid)
其中,24表示操作类型,0位不限制,20是条数。
帝国cms 列表模板及标签模板(list.var) $listtemp=' 用法
帝国所有模板均可使用php代码对字段内容进行灵活处理,唯独列表模板list.var不支持使用程序代码,但是它支持$listtemp变量。
为了使帝国模板制作更加完美、满足各种需求,帝国新增了list.var支持程序代码功能,列表模板、标签模板(ecmsinfo标签调用)与搜索模板list.var均可使用php代码对字段内容进行验证或任意处理再输出,使信息列表显示效果更加强大灵活。
实现要点:
1、增加模板时list.var模板需要勾选“使用程序代码”选项。
2、直接添加PHP代码,不需要加 程序开始和结束标记。
3、字段值数组变量为$r,对应的字段变量为$r[字段名],如:标题字段变量就是$r[title]。另外编号变量为$no
4、将最终模板内容赋给$listtemp变量即可。
list.var模板范例:
例子1:如果信息没有设置标题图片就显示指定的图片。
if(empty($r[titlepic]))
{
$r[titlepic]='/images/img.gif';
}
$listtemp='<li><a href="[!--titleurl--]"><img src="[!--titlepic--]"></a></li>';
$listtemp=' 帝国CMS让模板list.var支持程序代码';
//说明:$r[titlepic]为标题图片字段变量。$listtemp为模板内容变量。
例子2:如果信息是今天发布的就显示“NEW”图片标识。
$newimg='';
if(time()-$r[newstime]<=1*24*3600)
{
$newimg='帝国CMS让模板list.var支持程序代码';
}
$listtemp='<li><a href="[!--titleurl--]">[!--title--]</a> '.$newimg.'</li>';
//说明:$r[newstime]为发布时间字段变量。$listtemp为模板内容变量。
例子3:调用投稿用户的公司名称。
$userr=$empire->fetch1("select company from {$dbtbpre}enewsmemberadd where userid='$r[userid]' limit 1");
$listtemp='<li><a href="[!--titleurl--]">[!--title--]</a> <span>公司名称:'.$userr[company].'</span></li>';
//说明:$r[userid]为发布者用户ID字段变量。$listtemp为模板内容变量。
例子4:让[!--no.num--]信息标号在列表内容模板(list.var)中从0开始(默认从1)
$no=$no-1;
$listtemp='<div class="swiper-slide" id="slide_'.$no.'"><img src="[!--titlepic--]" alt="[!--title--]"></div>';
拓展:灵动标签<?=$bqno-1?>即可
例子5:帝国cms时间如何分开调用呢
这个分开调用一般要看在什么页面,一般这个用的最多的是列表页调用
EG:(列表页LIST.VAR程序支持代码)
$year=date('Y',$r[newstime]);
$yue=date('m',$r[newstime]);
$day=date('d',$r[newstime]);
$listtemp='<li>年:'.$year.'</li><li>月:'.$yue.'</li><li>日:'.$day.'</li>';
万能法:
1使用程序代码: '.format_datetime($r[newstime],'Y-m-d').'
例子:
$listtemp='<li class="wow animated">
<dl>
<dt><a href="[!--titleurl--]"><img src="[!--titlepic--]" alt="[!--title--]"></a><div class="in-date"><em><p>'.format_datetime($r[newstime],'d').'</p></em><p>'.format_datetime($r[newstime],'d').'</p></div></dt>
<dd><a href="[!--titleurl--]"><h5>[!--title--]</h5></a><p>[!--smalltext--]</p><a href="[!--titleurl--]"><span>READ MORE ></span></a></dd>
</dl>
</li>';
帝国cms[!--newstime--]单独调用年、月、日
其他说明:
1、如果$listtemp引用模板内容是用单引号,那么里面使用单引号前面要加\,
例如:$listtemp='帝国CMS让模板list.var支持程序代码 ';
2、相反如果引用模板内容是用双引号,那么里面使用双引号前面也要加\,
例如:$listtemp="帝国CMS让模板list.var支持程序代码 ";
注意:就是在list.var使用程序代码时,所有PHP代码要顶格写,前面不要有空格,最常见的$listtemp前面不要有空格。