帝国CMS列表模板和内容模板过滤smalltext简介中的空格、换行

帝国CMS的内容简介如果采取自动生成的方式,会产生空格、换行,这种数据读取到页面上肯定是不行的,必须过滤处理。
ecms-smalltext.png

一、内容模板使用以下代码,可过滤smalltext简介中的空格、换行:

<?
$qian=array(" "," ","\t","\n","\r");
$hou=array("","","","","");
$smalltext=str_replace($qian,$hou,$navinfor[smalltext]);
echo $smalltext;
?>

二、列表模板过滤smalltext简介中的空格、换行,方法如下:
1、列表内容模板(list.var)右侧,勾选“使用程序代码”
2、采用以下代码:

$r[smalltext]=str_replace(array("\r\n", "\r", "\n", "<br />", "</p>"),"",str_replace("<p>","",$r[smalltext]));
$listtemp='<li><p>[!--smalltext--]</p></li>';

列表样式$listtemp中的内容自行修改。

CentOS系统漏洞修复简易方法

在阿里云主机的管理后台上,经常看到漏洞警告。
对于Linux系统的漏洞,还是要重视的,未雨绸缪啊。
但阿里云后台的修复功能需要付费,其实自己操作修复特别简单,只需几个命令即可。

Centos系统的漏洞修复其实很简单,用yum安装包管理工具,只需两个步骤:
(操作执行前一定要备份或者给服务器创建好快照)

1.清理缓存信息
yum clean all

2.安装所有软件和系统更新
yum -y update
yum -y upgrade(只升级所有包,不升级软件和系统内核)

如果有漏洞需要重启,可以安全重启:
rebootshutdown -r 0 重启

当然除了 Centos 系统,Ubuntu 系统也很常用。如果你的主机是 Ubuntu 及 Debian 系统,那么修复命令需要用apt,操作步骤与yum是很类似的。

本文转自:https://nipang.cn/centos-update.html

帝国CMS灵活调用个性化的多图片集插件

帝国CMS论坛受管制,强制关闭了,很多技术贴内容无法搜到,之前没养成随手记的习惯,导致现在诸多的不便...
ECMS的图集效果不太理想,一直在用的一个可以灵活调用的多图集功能插件。

1、功能代码

将下面的代码,复制到你的userfun.php中(文件位置:/e/class/userfun.php)

function user_PhotoMorepic($tempid){
    global $navinfor,$public_r;
    $morepic=$navinfor['morepic'];
    $rexp="\r\n";
    $fexp="::::::";
    $rstr="";
    $sdh="";
    $w_morepic="";
    $rr=explode($rexp,$morepic);
    $count=count($rr);
    $num=$count;
    
    //取得模板
    $tr=sys_ReturnBqTemp($tempid);
    if(empty($tr['tempid']))
    {return "";}
    $listtemp=str_replace('[!--news.url--]',$public_r[newsurl],$tr[temptext]);
    $subnews=$tr[subnews];
    $listvar=str_replace('[!--news.url--]',$public_r[newsurl],$tr[listvar]);
    $rownum=$tr[rownum];
    $formatdate=$tr[showdate];
    if(empty($rownum))
    {$rownum=1;}
    
    //列表
    $list_exp="[!--empirenews.listtemp--]";
    $list_r=explode($list_exp,$listtemp);
    $listtext=$list_r[1];
    $no=1;
    $changerow=1;
    
    for($i=0;$i<$count;$i++)
    {
        $fr=explode($fexp,$rr[$i]);
        $smallpic=$fr[0]?$fr[0]:$public_r[newsurl]."e/data/images/notimg.gif";    //小图
        $bigpic=$fr[1]?$fr[1]:$public_r[newsurl]."e/data/images/notimg.gif";    //大图
        if(empty($bigpic))
        {
            $bigpic=$smallpic;
        }
        $picname=htmlspecialchars($fr[2]);    //名称
        $val[picname]=$picname;
        $val[bigpic]=$bigpic;
        $val[smallpic]=$smallpic;
        /////////////////
        $strF=",picname,bigpic,smallpic,";
        $repvar=user_ReplaceShowpicsVars($listvar,$strF,$val,$no);
        $listtext=str_replace("<!--list.var".$changerow."-->",$repvar,$listtext);
        $changerow+=1;
        //超过行数
        if($changerow>$rownum)
        {
        $changerow=1;
        $string.=$listtext;
        $listtext=$list_r[1];
        }
        $no++;
    }
   $string=$list_r[0].$string.$list_r[2];
    echo $string;
}

function user_ReplaceShowpicsVars($listtemp,$strF,$val,$no){
$fr=explode(',',$strF);
$fcount=count($fr)-1;;
for($i=1;$i<$fcount;$i++)
{
$f=$fr[$i];
$value=$val[$f];
$listtemp=str_replace('[!--'.$f.'--]',$value,$listtemp);
}
$listtemp=str_replace('[!--no.num--]',$no,$listtemp);

return $listtemp;
}

2、添加标签

标签名:图集
标签符号:pichd
函数名:user_PhotoMorepic
标签格式:[pichd]tempid[/pichd]
(tempid为模板标签id)

3、标签模板

页面模板内容:
列表头[!--empirenews.listtemp--]列表内容[!--empirenews.listtemp--]列表尾

列表内容模板(list.var)
[!--picname--] 图片说明(标题)
[!--smallpic--] 小图
[!--bigpic--] 大图
[!--no.num--] 序号

内容模板
[pichd]标签模板id[/pichd]

本文转自:https://nipang.cn/ecms-PhotoMorepic.html

帝国CMS全站电脑端自动调整手机端动态静态代码

帝国CMS7.2版推出了完善的多访问终端功能,让网站多种移动访问端制作更加方便。7.5版中多访问端升级:支持在主端后台刷新生成各访问端静态页面,多访问端用静态模式下使用更方便。

1、页面头部。JS代码在body前面加上以下HTML源代码
PC端部分代码(判断是否是手机端跳转至手机页面地址)

<script data-fixed="true">
  !function(){
    function params(u, p){
      var m = new RegExp("(?:&|/?)"+p+"=([^&$]+)").exec(u);
      return m ? m[1] : '';
    }
    if(/iphone|ios|android|ipod/i.test(navigator.userAgent.toLowerCase()) == true && params(location.search, "from") != "mobile"){
      location.href = 'https://m.tzzs.net/';
    }
  }();
</script>

手机端部分代码(判断是否是PC端跳转至PC页面地址)

<script data-fixed="true">
  !function(){
    if(/iphone|ios|android|ipod/i.test(navigator.userAgent.toLowerCase()) == false){
      location.href = 'https://www.tzzs.net/';
    }
  }();
</script>

2、列表页

动态页:http://m.tzzs.net/e/action/ListInfo/?classid=[!--self.classid--]
静态页:http://m.tzzs.net<?$r['classid']=$GLOBALS[navclassid];$classurl=sys_ReturnBqClassname($r,9);echo $classurl;?>

3、内容页

动态页:http://m.tzzs.net/e/action/ShowInfo.php?classid=[!--classid--]&id=[!--id--]
静态页:http://m.tzzs.net[!--titleurl--]

效果演示站点:https://www.tztjfc.com/

本文转自:https://nipang.cn/ecms-pc-mobile.html

帝国CMS灵动标签获取通用子栏目数据,及获取同级父栏目下相同名称栏目列表页的数据

具体案例网站栏目共有4级,其中一个工作室栏目下面有9个总科室,下级再分36个小室,每个科室又有18个独立的终极栏目。
有个共性就是:每个科室的18个终极栏目,栏目的名称都是一样的。
工作室首页、列表、内容页的模板结构都是一模一样的,调用对应的科室栏目下不同的数据。
为了避免出现36个首页模板、36个栏目列表页模板、36个...
就需要使用灵动标签,获取通用子栏目数据,及获取同级父栏目下相同名称栏目列表页的数据。

下面整理下实现方法:
封面模板,工作室首页模板:

[e:loop={"select classid, classname, classpath from phome_enewsclass where bclassid='$GLOBALS[navclassid]' and classname='研究课题'",5,24,0,0,0}] [ecmsinfo]$bqr[classid],6,46,0,0,2,0[/ecmsinfo] [/e:loop]

子栏目名称调用:

<?=$class_r[$bqr[classid]]['classname']?>

子栏目链接调用:

<?=$class_r[$bqr[classid]]['classpath']?>

终极栏目列表,获取同父栏目下的同级栏目的数据:

<?php $bclassid=$class_r[$GLOBALS[navclassid]][bclassid]; ?> [e:loop={"select classid, classname, classpath from phome_enewsclass where bclassid='$bclassid' and classname='精品课件'",5,24,0,0,0}] [ecmsinfo]$bqr[classid],6,46,0,0,2,0[/ecmsinfo] [/e:loop]

列表里面用[!--bclass.id--],放在灵动标签内没有作用,定义了一个变量才获取到上级id

另外,在论坛请教了一下,如何获得父目录的父目录名称:

<?php $bclassid=$class_r[$GLOBALS[navclassid]][bclassid]; $bbclassid=$class_r[$bclassid][bclassid]; echo $class_r[$bbclassid][classname]; ?>

本文转自:https://nipang.cn/ecms_skills.html

帝国CMS将正文内容img图片标签里alt值默认设为文章标题

需求:我们在发布内容时,希望内容中的图片都能给alt加上内容,这样对SEO友好,还可能从搜索引擎图片搜索那里带来一些流量,如果人工加,效率低。
问题:正文内容中的图片是和其他文字存在一起,没法用模板标签单独读取出来。
思路:新建一个函数,用于自动替换正文IMG里的ALT内容。
方法:在 e/class/userfun.php 里面增加:

//替换正文IMG里的ALT内容
function user_imgalt($mid,$f,$isadd,$isq,$value,$cs){
$title=$_POST['title'];
$htmls=$value;
$pattern = "/<img[^>]+>/"; 
preg_match_all($pattern, $htmls, $matches); 
for ($i=0; $i<=count($matches[0]); $i++) {
  preg_match_all("/alt=\".+?\"/",$matches[0][$i],$altimg); 
    $t_alt=count($altimg[0]);
    if($t_alt==0){
        $htmls=str_replace("<img","<img alt=\"{$title}\"",$htmls);
    }
}   
    return $htmls;
}

然后在后台系统设置-数据表模型-字段管理里面 编辑 newstext字段,增加如下:
ecms-newstext-imgalt.jpg

本文转自:http://www.dongchuanmin.com/archives/216.html