织梦自定义图片字段调用图片地址

dedecms模型添加的图片数据类型,在前台模板输出后是带有html代码的,我们在使用时只是需要图片地址就行了。

这样我们只需要写个自定义方法从字符串中把图片提取出来即可。

打开 /include/extend.func.php 在最下面添加

/**
 *  自定义图片字段调用图片地址
 *
 * @access    public
 * @param     string  $fieldname  	字段名
 * @param     string  $ftype	  	输出样式
 * @return    string
 */
if(!function_exists(‘GetImgUrl‘))
{
	function GetImgUrl($fieldname, $ftype = 1)
	{
		if($fieldname != ‘‘)
		{
			$dtp = new DedeTagParse();
			$dtp->LoadSource($fieldname);
			if(is_array($dtp->CTags))
			{
				foreach($dtp->CTags as $ctag)
				{
					if($ctag->GetName() == ‘img‘)
					{
						$width = $ctag->GetAtt(‘width‘);
						$height = $ctag->GetAtt(‘height‘);
						$imgurl = trim($ctag->GetInnerText());
						$img = ‘‘;
						if($imgurl != ‘‘)
						{
							if($ftype == 1)
							{
								$img .= $imgurl;
							}
							else
							{
								$img .= ‘<img src="‘ . $imgurl . ‘" width="‘ . $width . ‘" height="‘ . $height . ‘" />‘;
							}
						}
					}
				}
			}
			$dtp->Clear();
			return $img;
		}
	}
}

首页模板标签调用写法

{dede:arclist typeid=‘1‘ row=‘14‘ titlelen=‘50‘ channelid=‘模型id号‘ addfields=‘自定义图片字段名‘}
[field:自定义图片字段名 function=GetImgUrl(@me)/]
{/dede:arclist}

模型id号怎么填?根据你自己自定义字段所在的内容模型来填 (如 channelid="1" 是 普通文章)

列表页模板标签调用写法

列表页dede:list标签写法,不需要channelid="模型id号" addfields="自定义字段名称"

这个只要在后台自定义字段里勾上使字段可以在列表的底层模板中获得 就行了

{dede:list pagesize=‘10‘ titlelen=‘250‘}
[field:自定义图片字段名 function=GetImgUrl(@me)/]
{/dede:list}

内容页模板标签调用写法

打开\templets\system\channel_article_image.htm 清空所有东西,只留下一个

[field:imgsrc/]

保存,这样就可以直接在内容页模板调用了

{dede:field.自定义图片字段名/}

原文地址:https://www.cnblogs.com/dedevip/p/9904740.html

时间: 2024-08-07 12:02:22

织梦自定义图片字段调用图片地址的相关文章

织梦5.7下载远程图片和资源无效全套最新解决方案

1.织梦5.7下载远程图片和资源无效可能是因为服务器上禁用了fsockopen() 函数造成的,在用fsockopen()的地方用 stream_socket_client()代替就可以了. 具体修改地方是 /include/dedehttpdown.class.php 第507行 $this->m_fp = @fsockopen($this->m_host, $this->m_port, $errno, $errstr,10); 替换为 $this->m_fp = @stream

DEDECMS织梦自定义表单中必填项、电话邮箱过滤以及验证码规则

织梦自定义表单必填项规则--->(wwwshu-acca.com网站表单) 1. 在plus/diy.php 的第 40行下加如下代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 //增加必填字段判断 if($required!=''){     if(preg_match('/,/', $required)){         $requireds = explode(',',$required);         foreach($requireds

织梦dedecms简略标题调用标签用法指南

我们在使用织梦DEDECMS建站过程中,为了使调用的文章标题简短且相对完整(原文标题太长),只好使用了调用简略标题这个方法,使标题显示为简短标题,指向标题时显示完整的标题.并获得文章静态地址链接 下面来看看DEDE织梦CMS简略标题调用方法:  使用的代码如下: 复制代码 代码如下: <ul>  {dede:arclist titlelen='60' orderby='pubdate' row='6' typeid='5'}  <li><a href=”[field:arcu

织梦cmsf表单提交到邮箱 织梦表单发送到邮箱 织梦自定义表单发邮箱

大家在做织梦做网站开发时会遇到一个问题:织梦的自定义表单是一个很鸡肋的功能,不仅在后台展示得奇丑,而且也没有提醒功能,使用起来很不方便.很多人用织梦自定义表单时,都想用户提交表单的时候可以发送到自己的邮箱里面去提醒自己.这样省了经常去织梦网站后台看最新的表单情况. 第一步:打开织梦后台,系统->核心参数 开启smtp 第二步: 修改/plus/diy.php代码.打开网站根目录下的plus文件 夹,里面有个diy.php文件(表单提交后处理文件),打开它,在85行上下有如下代码: $query

织梦联动枚举字段添加一级分类如果超过132个自动变成二级修复教程

织梦联动枚举字段添加一级分类如果超过132个自动变成二级 那是因为联动枚举数据表中的disorder字段类型长度不够引起的 解决教程 后台-SQL命令行工具-执行下面这句 ALTER TABLE `#@_sys_enum` CHANGE `disorder` `disorder` MEDIUMINT( 8 ) UNSIGNED NOT NULL DEFAULT '0' 原文地址:https://www.cnblogs.com/dedevip/p/9902148.html

织梦自定义表单地区联动类型不可用的解决办法

dedecms织梦自定义表单地区联动类型不可用,原因是官方模板文件中注释掉了相关选项,需要修改两个文件 打开 dede/templets/diy_field_edit.htm 找到 <option value="stepselect">联动类型</option--> 改成 --><option value="stepselect">联动类型</option> 打开 dede/templets/diy_field_

织梦后台频道页调用新建模型中的自定义字段所感

今天是2017年12月31日,能在这一年的最后一天再收获一些东西是非常值得开心的一件事情. 就在刚才,我做的频道页需要用到新建模型中的自定义字段,在首页和频道页调用字段的代码我前两天知道了,很自信的去调用,代码如下: {dede:arclist channelid = "模型id" addfields = "自定义字段名称" row="3"} 文档链接:[field:arcurl /] 我自定义的文章标题:[dede:field.arctitle

dedecmsV5.7自定义图片字段调用方法

正常情况下,在列表页(也就是 {dede:list}标签)调用附加的图片类型字段则会出现Fatal error: Call to a member function GetInnerText() on a non-object in /include/taglib/channel/img.lib.php"此类错误,解决方案如下: 打开/include/taglib/channel/img.lib.php文件并找到 $innerTmp = $arcTag->GetInnerText(); 将

织梦文章添加字段填栏目id,内容页调用字段里的栏目文章

在模型里增加个字段,然后在添加文章的时候,在字段里填了栏目id进去 在前台的内容页,调用这个字段栏目的多个文章出来 {dede:field.field1 runphp=yes} global $dsql; $sql = "select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault, tp.defaultname,tp.namerule,tp.moresite,tp.siteurl,tp.sitepath from `myblog_arch