帝国CMS-ECMS做站常用调用代码整理收录大全

VPS消息2字数 6199阅读模式

大鸟还是很喜欢用帝国来建站的,我们建站新手一般都是从织梦开始,但是织梦永久了,发现还是帝国cms不错,织梦都是用来练手,帝国说实话还是复杂很多的。大鸟平时用的帝国代码收录下来记录在这里,自己用到的时候刚好也可以查阅。

一、获取栏目网址:

$classurl=sys_ReturnBqClassname($bqr,9);//取得栏目地址

判断是否首页(用于高亮):

<?=(!$GLOBALS[navclassid])?' class="cur"':''?>

判断是否当前页(高亮):

<?=($GLOBALS[navclassid]==$bqr[classid])?' class="cur"':''?>

各页面自动跳转移动端:

<script src="http://siteapp.baidu.com/static/webappservice/uaredirect.js" type="text/javascript"></script>
<?php
/*判断首页或者列表或者内页自动生成跳转地址,,,,,如果不生效就把百度这个js文件保存在网站本地*/
if(!$GLOBALS[navclassid])
{
?>
<script type="text/javascript">uaredirect("http://m.xxx.com");</script>
<?php
}
else
{
?>
<script type="text/javascript">uaredirect("http://m.xxx.com/<?=$class_r[$GLOBALS['navclassid']]['classpath']?>/<?=($navinfor[id]?$navinfor[id].'.html':'')?>");</script>
<?php
}
?>

第二种种跳转方式

<?php
/*自动生成移动端跳转地址,仅限m.xxx.com形式,支持二级域名*/

$url = explode(".", $_SERVER['SERVER_NAME']);
for ($i = 1; $i < sizeof($url); $i++) {
    $weburl.=".".$url[$i];
}
if ($url[0]!="www"){
        $weburl="http://".$url[0]."m".$weburl;
}
else{
        $weburl="http://m".$weburl;
}
?>
<script type="text/javascript">uaredirect("<?=$weburl;?><?=$GLOBALS[navclassid]?'/':''?><?=$class_r[$GLOBALS['navclassid']]['classpath']?>/<?=($navinfor[id]?$navinfor[id].'.html':'')?>");</script>

按照指定排序调用SQL语句片段(配合条件调用):

order by field(classid,10,3,4,41,40)

栏目导航中判断某栏目是否为终极栏目:

if ($bqr[sonclass]=='' or $bqr[sonclass]=="|")
...

补充1:判断当前栏目是否有设置标题分类并调用:

<?php
//判断当前栏目是否有设置标题分类
$tr=$empire->fetch1("select ttids from phome_enewsclassadd where classid=$GLOBALS[navclassid]");
//上面这句如果用在标题分类列表页需要改为$tr=$empire->fetch1('select ttids from phome_enewsclassadd where ttids like "%'.$GLOBALS[navclassid].'%"');

                if ($tr[ttids]){
                ?>
                <div class="am-panel-bd" style=" padding:15px 5px; overflow:hidden;"> 
                <?
                $ttids=explode(',',trim($tr[ttids],","));
                         foreach($ttids as $id){
                                $ttname_sql=sys_ReturnEcmsLoopBq("select * from [!db.pre!]enewsinfotype where typeid=$id",0,24,0);
                                while($bqr2=$empire->fetch($ttname_sql)){
                                        $tturl=sys_ReturnBqInfoTypeUrl($bqr2[typeid]);
                ?>
                                <a class="ys4" href="<?=$tturl?>" target="_blank"><?=$bqr2[tname]?></a>
                <?php
                                }//endwhile
                        }//endfor
?>
                </div>
<?
                }//ENDIF
?>

补充2:禁止页面被复制和禁止右键:

<style type="text/css">  
body {  
    -webkit-touch-callout: none;  
    -webkit-user-select: none;  
    -khtml-user-select: none;  
    -moz-user-select: none;  
    -ms-user-select: none;  
    user-select: none;  
}  
</style>  
<script langauge="javascript">  
document.oncontextmenu=function(e){return false;}  
</script>   
</head>
...

补充3:访客留言或者新订单等等场景自动发邮件到管理员信箱:

并非原创,同时借鉴了轮胎两位大神的帖子,做了一些修改。

//给管理员信箱发送通知邮件新增函数 20180523
//参考网址:http://bbs.phome.net/showthread-13-167022-0.html
//参考网址:http://bbs.phome.net/ShowThread/?threadid=346659&forumid=13
function SendNoticeToAdmin($siteurl,$body){
        global $empire,$dbtbpre;
        $empire=new mysqlquery();
        $pr=$empire->fetch1("select email from {$dbtbpre}enewspublic limit 1");

        if(is_array($body)){
                foreach($body as $value){
                        $key=key($body);
                        next($body);

                                                //过滤和替换邮件里显示的内容 自修改
                                                if ($key=='name' or $key=='mycall' or $key=='lytext'  or $key=='ecmsfrom'){

                                                        switch ($key){
                                                                case 'name':
                                                                        $key="留言者";
                                                                        $subject=$value;
                                                                        break;
                                                                case 'mycall':
                                                                        $key="联系方式";
                                                                        $subject.="(".$value.")的留言";
                                                                        break;
                                                                case 'lytext':
                                                                        $key="留言内容";
                                                                        break;
                                                                case 'ecmsfrom':
                                                                        $key="来源网址";
                                                                        $value= $siteurl.$value;//此处修改网站首页前缀
                                                                        break;
                                                        }        


                                                        $msgtext .= "[$key]:"."$value"."\n";
                                                }
                }
        }else{
                $msgtext=$body;
        }
        //$msgtext .= "\r\n\r\n注意请勿直接回复邮件:\r\n客户信息及其留言信息全部在上面邮件内容中.\n\r";
        $sm=EcmsToSendMail($pr['email'],'来自'.$siteurl.':'.$subject,$msgtext);
        return $sm;
}

补充4:

[!--pagedes--]在内容页调用默认调用标题的无损解法:通常大家可能会去修改functions.php,对以后升级会存在影响. 为了SEO想了一个折中简单的办法.

<meta name="description" content="<?=$navinfor[id]?$navinfor[smalltext].'---':''?>[!--pagedes--]" />

补充5:专题列表页调用同classid其他专题,输出导航和高亮:

<div class="zhuanti">
<?php
$ecms_bq_sql=sys_ReturnEcmsLoopBq('select classid from phome_enewszt where ztid='.$GLOBALS[navclassid],1,24,0,'','');
while($bqr=$empire->fetch($ecms_bq_sql))
        {
        $ecms_bq_sql2=sys_ReturnEcmsLoopBq('select ztid,ztname,ztpath,ztimg from phome_enewszt where classid='.$bqr[classid],8,24,0,'','ztid asc');
        $bqno2=0;
                while($bqr2=$empire->fetch($ecms_bq_sql2))
                {
                        $bqno2++;
?> 
<a href="<?=$public_r[newsurl]?><?=$bqr2[ztpath]?>" title="<?=$bqr2[ztname]?>"<?=($GLOBALS[navclassid]==$bqr2[ztid])?' class="cur"':''?>><?=esub($bqr2[ztname],15)?></a>
<?                
                }//endwhile2
}//endwhile1
?> 
</div>

列表页中单个产品显示所属专题,增加到列表内容模板(list.var)中:

$ecms_bq_sql=sys_ReturnEcmsLoopBq('select ztid from phome_enewsztinfo where id='.$r[id],1,24,0,'','');
while($bqr=$empire->fetch($ecms_bq_sql))
{
       $ecms_bq_sql2=sys_ReturnEcmsLoopBq('select ztid,ztname,ztpath,ztimg from phome_enewszt where ztid='.$bqr[ztid],1,24,0,'','');
                while($bqr2=$empire->fetch($ecms_bq_sql2))
                {
                                $zturl=$public_r[newsurl].$bqr2[ztpath];
                                $ztname=$bqr2[ztname];
                }//endwhile2

}//endwhile1

循环调用产品栏目数据,替代循环子栏目信息标签,可自由更改模版和调用条件:

<!--循环调用产品栏目数据,替代循环子栏目信息标签,可自由更改模版和调用条件-->
[e:loop={'select classid,classname,classpath from phome_enewsclass where bclassid=1 and showclass=0 order by classid asc',10,24,0,'',''}]
<?
$classurl=sys_ReturnBqClassname($bqr,9);//取得栏目地址
?>
<a href="<?=$classurl;?>"><?=$bqr[classname]?></a>
<?php
}

    $pro_new=$empire->query("select title,titlepic,titleurl from phome_ecms_newmaterial where classid = '".$bqr[classid]."' order by newstime desc");
    //取得该分类下的最新数据
    while($r=$empire->fetch($pro_new)) {        
        $url=sys_ReturnBqTitleLink($r);
?>
<a target="_blank" href="<?=$url;?>"><img class="img-responsive center-block" alt="<?=$r[title]?>" title="<?=$r[title]?>" src="<?=$r[titlepic];?>" ></a><a target="_blank"  href="<?=$url?>"><?=$r[title]?></a>
<?php
     }
?>  
[/e:loop]

全站SEO标题懒人格式:

"网页标题"+"文章内页优化用自定义字段"或者"栏目或专题页优化用自定字段"+网站名称(首页不显示)

<title>[!--pagetitle--]<?=$navinfor[id]?'/'.$navinfor[tuijie]:''//如果在文章内页显示自定义字段tuijie内容?><?=($GLOBALS[navclassid]  and !$navinfor[id])?'/'.ReturnClassAddField($GLOBALS[navclassid],'tuijie').ReturnZtAddField($GLOBALS[navclassid],'tuijie'):''//如果在栏目内页显示自定义字段tuijie内容,专题自定义字段函数并列一起但不会同时调用?><?=$GLOBALS[navclassid]?'/'.$public_r[sitename]:''//如果在不在首页显示后台设置的网站标题?></title>

多访问端换域名后必须执行的SQL语句(全):

update phome_ecms_news_data_1 set newstext=REPLACE(newstext,'老域名','新域名'); update phome_ecms_news set titlepic=REPLACE(titlepic,'老域名','新域名'); update phome_ecms_newmaterial set newstext=REPLACE(newstext,'老域名','新域名'),titlepic=REPLACE(titlepic,'老域名','新域名'); update phome_enewsclass set classimg=REPLACE(classimg,'老域名','新域名'); update phome_enewsclassadd set eclasspagetext=REPLACE(eclasspagetext,'老域名','新域名'); update phome_enewspublic set fileurl=REPLACE(fileurl,'老域名','新域名'); update phome_enewsmoreport set purl=REPLACE(purl,'m.老域名','m.新域名');

都是平时自己会用到的,上不了什么台面,也是为了方便自己查阅,肯定还有很多其他的,大鸟会陆续分享,如果你也有很好用的代码,不放跟大鸟分享。

weinxin
我的微信
微信公众号
关注大鸟博客公众号
 
大鸟
评论  2  访客  1  作者  1
    • 孟垂博
      孟垂博 0

      我刚发布了一篇相同的文章,可以做个友链 :grin:

        • 大鸟
          大鸟

          @ 孟垂博 额,站点太新了。

      匿名

      发表评论

      匿名网友

      :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

      确定