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

在织梦(DedeCMS)中,可以通过添加自定义函数来直接调用自定义图片字段的地址。具体方法是在 /include/extend.func.php 文件中添加如下代码:,,“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 .= '';, }, }, }, }, }, $dtp>Clear();, return $img;, }, },},`,,然后在模板中通过以下方式调用:,,`html,{dede:arclist typeid='1' row='14' titlelen='50' channelid='模型id号' addfields='自定义图片字段名'},[field:自定义图片字段名 function=GetImgUrl(@me)/],{/dede:arclist},

在织梦(DedeCMS)系统中,自定义字段图片地址调用是一个常见的需求,本文将详细介绍如何直接调用织梦自定义字段中的图片地址,确保内容准确且逻辑清晰。

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

一、织梦自定义字段简介

织梦的自定义字段允许用户在文章或页面中添加额外的数据字段,这些字段可以存储文本、数值、日期等不同类型的数据,包括图片,默认情况下,自定义图片字段的数据格式可能包含HTML标签,如{dede:img src='/uploads/image.jpg' width='270' height='129'}/,这在前台模板中直接调用时并不方便。

二、直接调用自定义字段图片地址的方法

为了直接获取图片的URL地址,我们需要编写一个自定义函数来解析自定义字段的内容,以下是具体步骤:

1. 创建自定义函数

打开织梦的/include/extend.func.php文件,在文件末尾添加以下函数:

/**
 * 自定义图片字段调用图片地址
 * 
 * @access public
 * @param string $fieldname 字段名
 * @param string $ftype 输出样式,1表示只返回图片地址,0表示返回完整的img标签
 * @return string
 */
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;
    }
}

2. 调用自定义函数

在织梦的模板文件中,使用以下方式调用自定义函数:

<! 只调用图片路径 >
[field:自定义图片字段名 function="GetImgUrl(@me,1)"/]
<! 调用整个img标签 >
[field:自定义图片字段名 function="GetImgUrl(@me,0)"/]

如果自定义图片字段名为imgurl,则调用方式为:

<! 只调用图片路径 >
[field:imgurl function='GetImgUrl(@me,1)'/]
<! 调用整个img标签 >
[field:imgurl function='GetImgUrl(@me,0)'/]

三、示例演示

假设我们有一个模型字段名为datu,用于存储大图的自定义字段,以下是具体的操作步骤:

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

1. 新建模型和栏目

进入织梦后台,点击“核心” > “内容模型管理”,选择“普通文章”进行更改,进入编辑界面,切换到“字段管理”选项,点击“添加新字段”,添加一个名为datu的字段,类型选择“图片”。

2. 新建栏目并发布文档

新建一个栏目,模型选择刚才新建的模型“幻灯片”,并设置为隐藏该栏目,在该栏目下新建需要显示的文档数目,例如7个大图,在建立文档时填写相应的图片和链接地址。

3. 调用自定义函数

在模板文件中调用自定义函数以获取图片地址:

{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='GetImgUrl(@me,1)'/]"></a></li>
{/dede:arclist}

四、常见问题解答(FAQs)

Q1:如何在首页调用自定义图片字段里的图片地址?

A1:在首页模板中,可以通过自定义方法从字符串中提取图片地址,打开/include/extend.func.php 文件,在最下面添加如下代码:

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

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}

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

Q2:如何修改列表页模板以支持调用自定义图片字段?

A2:在列表页模板中,使用{dede:list} 标签时,不需要指定channelid="模型id号"addfields="自定义字段名称",只需要在后台自定义字段里勾上使字段可以在列表的底层模板中获得即可。

{dede:list pagesize='10' titlelen='250'}
[field:自定义图片字段名/]
{/dede:list}

如果遇到错误提示,可以尝试修改/include/taglib/channel/img.lib.php 文件,找到$innerTmp = $arcTag>GetInnerText(); 并将其修改为$innerTmp = ($arcTag=="") ? trim($arcTag) : trim($arcTag>GetInnerText());,这样可以解决附加的图片字段无法正常调用的问题。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1242800.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希的头像未希新媒体运营
上一篇 2024-10-26 23:20
下一篇 2024-10-26 23:22

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入