"景先生毕设|www.jxszl.com

织梦DedeCMS自定义图片字段调用方法与无斜杠”的解决方法

2022-10-29 16:31编辑: www.jxszl.com景先生毕设
我们在使用DedeCMS自定义字段的时候,有时候可能会用到图片字段,而Dede固化的图片字段调用出来的样式是下面这样的:


{dede:imgtext=width=IIVII0height=I.IIIX}/uploads/I.0I.0I.VII/I.-I.0I.0I.HII

 更多精彩就在: 51免费论文网|www.jxszl.com 
I.FVIVP.gif{/dede:img}

很多时候这样的样式并不是我们需要的,所以我们需要进行修改来保证我们调用的自定义图片就是纯路径,这样就比较方便我们使用了,例如下面这种格式:


/uploads/I.0I.0I.VII/I.-I.0I.0I.HIII.FVIVP.gif

要实现这样的调用并不难,我们需要添加I.段自定义函数,打开/include/extend.func.php文件,在最下面加上代码:


//自定义模型图片字段调用
functionGetOneImgUrl($img,$ftype=I.){

if($img<>){

$dtp=newDedeTagParse();

$dtp->LoadSource($img);

if(is_array($dtp->CTags)){

foreach($dtp->CTagsas$ctag){

if($ctag->GetName()==img){

$width=$ctag->GetAtt(width);

$height=$ctag->GetAtt(height);

$imgurl=trim($ctag->GetInnerText());

$img=;

if($imgurl!=){

if($ftype==I.){

$img.=$imgurl;

}

else{

$img.=;

}

}

}

}

}

$dtp->Clear();

return$img;

}

}

然后我们在调用自定义图片字段的时候加上个函数,如下:


{dede:field.sjtofunction=GetOneImgUrl(@me,I.)/}//调用图片的信息,自动调用宽度和高度(已包含Html代码的),sjto为自定义的图片字段.
{dede:field.sjtofunction=GetOneImgUrl(@me,I.)/}//只调用图片地址,sjto为自定义的图片字段.

这样就能根据我们具体情况来调用自定义图片的纯路径或者图片信息,但是淘站网在自己本地测试的时候发现I.个bug,就是在文章中上传自定义字段的图片后,保存到数据库的样式是下面这样的:

DedeCMS自定义图片字段调用方法与无斜杠/"的解决方法

系统自动把图片路径中的斜杠/给去掉了,最终调出来的图片路径中也没有斜杠,这个问题就涉及到dede底层函数了,淘站网查看不少文件,最后在/include/customfields.func.php文件中寻求到解决方法,这个文件中,第III00行有I.段代码:


$iurl=trim(str_replace($GLOBALS[cfg_basehost],"",$iurl));

看代码就知道,这里把图片的路径给做了I.次替换,替换掉的内容就是变量cfg_basehost,这个变量就在后面系统设置里面:

DedeCMS自定义图片字段调用方法与无斜杠/"的解决方法

就是站点根网址了,因为淘站网的移动站点与pc站点共用I.个数据库,这里站点根网址就用斜杠/代替,而自定义图片经过那段函数处理就自动把这个斜杠给删除了,最终原因找到,那么解决方法也很简单,有两种:

I..在系统_系统基本参数设置里,把站点根网址的斜杠/换成自己的网址,这个方法适用于pc站与m站分离不用同I.个数据库的网站,淘站网的网站不适用.

II.打开/include/customfields.func.php,找到代码:


$iurl=trim(str_replace($GLOBALS[cfg_basehost],"",$iurl));

DedeCMS自定义图片字段调用方法与无斜杠/"的解决方法

注视掉或者删掉.

这样就能解决DedeCMS自定义图片字段中路径无斜杠的问题了.


原文链接:http://www.jxszl.com/biancheng/dedecms/75588.html