帝国CMS常用功能汇总(1)

By kaqishe
In 杂碎
2020-11-27
网络

本人对程序只能说是略知一二,做个小型网站只能用开源的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 &gt;</span></a></dd>

 </dl>

  </li>';

帝国cms[!--newstime--]单独调用年、月、日

其他说明:

1、如果$listtemp引用模板内容是用单引号,那么里面使用单引号前面要加\,

例如:$listtemp='帝国CMS让模板list.var支持程序代码 ';

2、相反如果引用模板内容是用双引号,那么里面使用双引号前面也要加\,

例如:$listtemp="帝国CMS让模板list.var支持程序代码 ";

注意:就是在list.var使用程序代码时,所有PHP代码要顶格写,前面不要有空格,最常见的$listtemp前面不要有空格。

CSS flexbox的学习之项目的属性
帝国CMS常用功能汇总(2)