DedeCMS织梦自定义图片字段调用出现{dede:img ..}

编辑:找物 来源:http://blog.csdn.net/moqiang02/article/details/12355665 1609 2017-11-10 ›› 新闻资讯
主站首页 - DedeCMS织梦自定义图片字段调用出现{dede:img ..}
做站过程中碰到这样一个问题,找到解决办法收藏分享:为什么在首页用自定义列表调用出来的图片字段不是正确的图片地址,而是类似于:
{dede:img text='' width='270' height='129'} /uploads/101017/1-10101H21F54P.gif {/dede:img} 这样的格式!

非常明显,这样是不能正确显示的,这是织梦自定义图片字段的处理方式造成的。要解决这个问题,我们必须得创建一个自定义函数,其实现方式为:

一、实现方法
1)创建自定义函数

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

[html] view plain copy
  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 .'.$imgurl.'" width="'.$width.'" height="'.$height.'" />';     
  18.                         }     
  19.                     }     
  20.                                  
  21.                 }     
  22.             }     
  23.         }     
  24.         $dtp->Clear();     
  25.         return $img;         
  26.     }     
  27. }    
保存后关闭即可。

 

2)函数调用方法

问:我们创建好函数以后,那么这个函数要如何来调用呢?

答:本函数的调用方法为:

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

比如:我们的自定义图片字段名为 imgurl ,那么调用方式有以下两种:

[field:imgurl function='GetOneImgUrl(@me,0)'/] 

[field:imgurl function='GetOneImgUrl(@me,1)'/] 


二、示例演示
1)模型字段添加

进入网站后台,点击[核心]——[内容模型管理],点击“普通文章”的“更改”按钮,进入编辑界面,切换到“字段管理”选项,点击“添加新字段”,如图:

创建好字段以后,我们在增加或编辑文档时候,那么就会有这个字段了,如图:

上传好你要显示的图片以后,保存即可。

2)前台调用

原本我们前台调用这个字段的方法,就是通过arclist标签的 channelid 与 addfields 两个参数来配合调用(点击查看arclist的标签详解),这里不再重复的一一熬述。但大体的自定义字段的方法是这样的:

[html] view plain copy
  1. {dede:arclist row='2' channeld='1' addfields='自定义字段1,自定义字段2'}  
  2.  底层模板 insertext  
  3. {/dede:arclist}  
运用到我们刚才的这个函数,调用方法为:
[html] view plain copy
  1. {dede:arclist row='5' orderby='id' channelid='1' addfields='imgurl'}     
  2. <li>[field:title/][field:imgurl function='GetOneImgUrl(@me,0)'/]li>    
  3. {/dede:arclist}    
或者使用sql语句查询:
[html] view plain copy
  1. {dede:arclist  typeid='~id~' flag = 'p'}  
  2.     [field:id runphp="yes"]   
  3.         $row = $GLOBALS['dsql']->GetOne("Select img From `dede_addonimages` where aid=@me");   
  4.         @me = $row['img'];  
  5.         @me=GetOneImgUrl(@me,1);  
  6.     [/field:id]  
  7. {/dede:arclist}   
好了,我们来看一下前台的效果图:
找物

最新上传:
中美两国互联网巨头的差距正在进一步拉大
CakeShop - 蛋糕面包店 OpenCart 3 主题
Omens - 多用途创意 WordPress 主题
中国跨境电商的变革--京东与SHOPIFY的合作
栏目循环调用标签更新日期:20130530
适用范围 栏目调用通用循环标签可以在模板内任何位置进行栏目列表的调用 循环基本格式 基本循环 <!--循环前缀:{table="category" 属性="值" }--> 循环调用信息 <!--/循环前缀-->1.2.3.循环前缀可以随意自定义但是只能为英文和下划线,循环内的所有循环前缀必须保持一致,否则会无法调用循环内的内容。 属性和值是循环内的条件属性,属性和值以等号作为区分,可以同时设置多个属性每个属性之间用空格分开。 可调用属性 属性 功能 可用值 值说明 例子
DedeCMS织梦自定义图片字段调用出现{dede:img ..}
做站过程中碰到这样一个问题,找到解决办法收藏分享:为什么在首页用自定义列表调用出来的图片字段不是正确的图片地址,而是类似于: {dede:img text='' width='270' height='129'} /uploads/101017/1-10101H21F54P.gif {/dede:img} 这样的格式! 非常明显,这样是不能正确显示的,这是织梦自定义图片字段的处理方式造成的。要解决这个问题,我们必须得创建一个自定义函数,其实现方式为: 一、实现方法 1)创建自定义函数 打开 /i
猜你喜欢
二、大容量数据结构设计:超高效稳定的内核构架,让网站发展无后顾之忧
帝国cms-帝国网站内容管理系统特性    2021/04/18 111
找物
Pearl - 企业商务 WordPress 主题
主题森林    2021/12/25 22
找物
活动预约报名
商城系统模块说明    2021/04/22 111
找物
积分管理-会员积分管理系统-会员积分管理软件-积分管理网站
解决方案    2021/04/17 223
找物