如何直接调用dede织梦自定义字段图片地址

       在默认的自定义图片字段模型调用时,一般调用出来是: {dede:img text='' width='270' height='129'} /uploads/101017/1-10101H21F54P.gif {/dede:img}这样的形式。 非常明显,这样是不能正确显示的,这是自定义图片字段的处理方式造成的。要解决这个问题,我们必须得创建一个自定义函数。这里我从新建模型到自定义字段的使用来举例说明下怎么直接调用图片地址。

假如我们要制作如下效果图中的幻灯片,方便在后台直接更改图片。而使用广告图片显然没法实现,我这里用的是新建一个模型,然后简历一个这个模型的栏目,再以发布文章的形式把图片添加进去,这个整个流程来说下。

一、新建一个模型,这个模型下共新添加两个字段:大图、小图。至于链接地址我直接使用的是跳转地址。其他设置默认即可。

大图、小图字段都这样添加
大图、小图字段都这样添加

二、新建一个栏目,模型选择刚才新建的模型”幻灯片“

最好设置为隐藏该栏目
最好设置为隐藏该栏目

三、设置好以后在该栏目下新建需要显示的文档数目即可。我这里需要7个大图,那么我就建立了七个文档。

 

新建七个文档

四、在建立文档的时候填写的方法如下图,我这里因为幻灯片点击需要调整到其他页,我没用新的字段,直接用的跳转地址更方便。

 

注意上图填写
注意上图填写

五、下面就是开始调用了,我是用在头部的。

如果直接用一般的调用方法,直接用调用字段名的方法是显然就会出现如开头所说的现象。下面我们就来开始修改下程序,以便可以直接调用图片地址:

六、创建自定义函数

打开 /include/extend.func. 文件(注:这个文件就是系统预留的自定义函数接口文件,主要用于二次开发用的。如果你是老版本,默认没有这个文件,自己创建一个PHP文件即可),在最下面的?>上一行加入以下函数代码:(如果结尾没有?>那就直接在最下面添加)

  1. function GetOneImgUrl($img,$ftype=1){  
  2. if($img <> ''){  
  3. $dtp = new DedeTagParse();  
  4. $dtp->LoadSource($img);  
  5. if(is_array($dtp->CTags)){  
  6. foreach($dtp->CTags as $ctag){  
  7. if($ctag->GetName()=='img'){  
  8. $width = $ctag->GetAtt('width');  
  9. $height = $ctag->GetAtt('height');  
  10. $imgurl = trim($ctag->GetInnerText());  
  11. $img = '';  
  12. if($imgurl != ''){  
  13. if($ftype==1){  
  14. $img .= $imgurl;  
  15. }  
  16. else{  
  17. $img .'<img src="'.$imgurl.'" width="'.$width.'" height="'.$height.'" />';  
  18. }  
  19. }  
  20.  
  21. }  
  22. }  
  23. }  
  24. $dtp->Clear();  
  25. return $img;  
  26. }  

七、下面就可以开始调用图片地址了。

 

[field:自定义图片字段名 function="GetOneImgUrl(@me,显示类型)"/]

比如:我们的自定义图片字段名为 datu 和 xiaotu

只举例调用datu字段的方法,那么调用方式有以下两种:

[field:datu function='GetOneImgUrl(@me,0)'/] 调用图片的信息,自动调用宽度和高度(已包含Html代码的<img />)

[field:datu function='GetOneImgUrl(@me,1)'/] 只调用图片地址,一般可用于背景图嵌套

八、具体到调用代码里面的调用方法就是:

 

{dede:arclist typeid='12' addfields='datu' channelid='17' limit='0,7'}

<li><a href="[field:arcurl/]" target="_blank"><img border="0" src="[field:datu function='GetOneImgUrl(@me,1)'/]"></a></li>

{/dede:arclist}

注意:上面蓝色的为要调用的字段要写进去,紫色为模型的颜色。

至此全部修改完毕。效果如下图:

用文章做幻灯片

如果还有不明白的地方可以到http://www.genban.org/bbs/去咨询。以上内容由织梦网站建设公司跟板网整理发布,转载请保留此链接。

 

 

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

我们在使用dedecms时候,需要拓展函数,那么这个函数需要写在哪个文件中呢?一般来说,需要写在:include/extend.func.php中,当然也可以写在其他公共文件中方便调用,以下是几个自定义函数示例: //通过会员ID调用会员uname名称的函数 function GetMemberNam
织梦发布文档时候字数被限制了如何修改,下面以文章发布为例,跟版网小编教你如何修改: 程序文件 dede/article_add.php dede/article_edit.php 修改代码 这里都是被进行了截取,我们只需要将截取字符改长一点就可以 $title= cn_substrR($title,$cfg_title_ma
我们在使用织梦DedeCMS系统程序开发网站中,经常遇到需要对文章标题进行字数限制,通常做法是在a标签中加入一个title属性,让鼠标放上去的时候显示完整标题。但是标题被剪裁掉一些字符而不完整,下面跟版网的小编就为你推荐另外几种标题调用方式,如进行标题
dedecms怎样设置给图片添加水印,具体步骤为: 一、进入系统基本参数中的附件设置,启用是否使用图片水印选项; 二、在图像水印设置中选择文字或图片水印类型,文字水印可调整字体、颜色、透明度及位置,图片水印则需上传png格式的半透明logo,并合理设置大
用到dedecms时候,有时候需要对文章列表、arclist输出时候的字段做判断显示,比如缩略图没有则不显示,有的时候就显示图片,并且固定尺寸,这个要怎么操作呢? 关于列表字段内自定义字段的调用方法,有数据则显示无数据则不显示(备注:limit=3,1意思是从第4
我们在使用织梦dedecms时候,如何使用if判断某个字段是否为空呢?我们以文章页自定义字段website为例:使用if语句判断website网址是否为空,如果有显示website并加上网址,如果没有就不显示。 {dede:field.website runphp='yes'}if(@me'') {@me = 'a href="'