标签归档 帝国CMS

通过seo圣人

帝国CMS7.5远程保存图片没有后缀的解决方法

帝国CMS7.5版本远程保存图片会存在一个问题,就是传上去的图片没有任何后缀,这个问题相信很多人都遇到了,而且束手无策,今天我就来讲下解决帝国CMS7.5远程保存图片没有后缀的解决方法。

帝国CMS7.0,在路径 e/class/functions.php中修改e/class/functions.php大概第1455行和1456行,代码如下:

        $zz1="/\<(img|IMG) (.*?)(src|SRC)=('|\"|\\\\\"|)(.+?)(\.jpg|\.JPG|\.gif|\.GIF|\.png|\.PNG|\.bmp|\.BMP|\.jpeg|\.JPEG)(.*?)>/is";
        $text=preg_replace($zz1,"<\\1 \\2\\3=\\4".$exp1."\\5\\6".$exp2."\\7>",$text);

修改成下面的样子:

        $zz1="/\<(img|IMG) (.*?)(src|SRC)=('|\"|\\\\\"|)([^'|\"|\\\\\"|]*)('|\"|\\\\\"|)(.*?)>/is";
        $text=preg_replace($zz1,"<\\1 \\2\\3=\\4".$exp1."\\5".$exp2."\\6\\7>",$text);

然后在修改 e/class/connect.php 的大概2862行

$r[filetype]=GetFiletype($url);

在这句话的后面加入如下代码:

if ((strlen($r[filetype]) !==4 ) OR (strlen($r[filetype]) !==5 )) $r[filetype]=".jpg";

修改完后不影响原来正常的使用,也就是普通形式的图片,和不带扩展名形式的图片都能够正确的远程保存下来。

帝国CMS7.2和7.5需要替换e/class/functions.php中的两个位置,
第一个位置:
//替换图片标签
function RepImg($text,$copyflash){
        global $ecms_config;
        $exp1="";
        $exp2="";
        //去掉图片链接
        if($ecms_config['sets']['saveurlimgclearurl']==1)
        {
                $zz2="/\<(a|A) (.*?)(href|Href)=('|\"|\\\\\"|)(.+?)><(img|IMG) (.*?)(src|SRC)=('|\"|\\\\\"|)(.+?)(\.jpg|\.JPG|\.gif|\.GIF|\.png|\.PNG|\.bmp|\.BMP|\.jpeg|\.JPEG)(.*?)><\/(a|A)>/is";
                $text=preg_replace($zz2,"<\\6 \\7\\8=\\9\\10\\11\\12>",$text);
        }
        $zz1="/\<(img|IMG) (.*?)(src|SRC)=('|\"|\\\\\"|)(.+?)(\.jpg|\.JPG|\.gif|\.GIF|\.png|\.PNG|\.bmp|\.BMP|\.jpeg|\.JPEG)(.*?)>/is";
        $text=preg_replace($zz1,"<\\1 \\2\\3=\\4".$exp1."\\5\\6".$exp2."\\7>",$text);
        return $text;
}

第二个位置:

function DoTranUrl($url,$classid){
        global $public_r,$class_r,$ecms_config,$efileftp_fr;
        $classid=(int)$classid;
        //处理地址
        $url=trim($url);
        $url=str_replace(" ","%20",$url);
    $r[tran]=1;
        //附件地址
        $r[url]=$url;
        //文件类型
        $r[filetype]=GetFiletype($url);
        if(CheckSaveTranFiletype($r[filetype]))
        {
                $r[tran]=0;
                return $r;
        }
        //是否已上传的文件
        $havetr=CheckNotSaveUrl($url);
        if($havetr)
        {
                $r[tran]=0;
                return $r;
        }
        //是否地址

通过seo圣人

用php读取帝国CMS字段

相信很多人在使用帝国CMS的时候都遇到过同样的问题,用帝国默认的标签无法满足需求,比如,某标签读出来是一个带a标签的字符串,这时候我只想要其中的部分资料怎么办?

比如:帝国CMS文章模板里面有一个标签是[!–writer–],他调用出来的结果是这样的:

<a href="">作者名字</a>

但是我们的需求只需要作者名字,应该怎么办呢?其实帝国CMS里面有一个数组,你直接使用就是了,请看下面的例子:

<?php
//echo $navinfor[字段名称];
echo $navinfor[writer];

?>

其实变量navinfor支持的字段有下面这些:

主标题、副标题等等[!–title–]、[!–ftitle–]、[!–newstime–]、[!–titlepic–]、[!–smalltext–]、[!–writer–]、[!–befrom–]、[!–newstext–]、[!–diggtop–]。像上面的方法一样使用就行了。

通过seo圣人

帝国CMS样式交替的写法

今天一个朋友有一个需求,哪就是样式交替,他网站后台用的是帝国CMS,可能是因为对这套系统了解的不够全面,在实现一些特殊需求的时候遇到了困难。

在为他解决问题的同时,我也想把解决方案分享出来,一来是自己做个笔记,而来是方便大家,下面我们直接进入正题。

他的需求是这样的:

<a class=”a1″ href=”https://ask.dobunkan.com”>网站优化</a>
<a class=”a2″ href=”https://www.dobunkan.com”>学课网</a>
就是a1和a2两个样式在循环列表中如此反复交替的出现。

思路:
如果是这样交替出现 ,我们其实可以利用判断来实现,因为帝国CMS模板是支持PHP语句的,而且帝国CMS里面还带有一个计数的标签,这个标签就是$bqno,他是从第一次循环后面一直加1,有了这样的标签,问题就好解决了,我们可以判断当这个变量的值为能整除2的时候,样式等于a2,当样式不能整除2的时候,样式等于a1,下面我们直接上代码:

[e:loop={3,6,0,1}]

<a class="<? if($bqno==1){?>a1<? }else{ ?>a2<? } ?>" href="https://ask.dobunkan.com">网站优化</a>

[/e:loop]

到这里,问题很轻松的就解决了。是不是很简单,如果有需求的需求,用这样的方法也是可以解决的。希望本文能够对你有所帮助。