咨询,就免费赠送域名与服务器,咨询热线:18670727589当前位置: 首页 > 建站知识 > 二次开发 > DEDECMS二次开发 >
联系我们
电话咨询:18670727589
E-mail:xiaoqiping#vip.qq.com
地址: 光大发展大厦南栋29楼(候家塘南车站旁)

dedecms自定义模型部分字段无法调用的原因

祈网:长沙网站建设首选服务提供商   作者/整理:互联网   来源:互联网   2015-01-06

新建了一个视频模型,里面添加了10来个字段,奇怪的是,这些字段在内容面页模板,部分可以读取到内容,而有一部分却无法读取

标签读取方式:{dede:field.字段名/} 按道理讲,无论是主表还是附加表的字段,都可以用这个标签读取出来,尝试了一下使用{dede:sql sql="查询语句"}[field:字段名/]{/dede:sql}方式,这种没有问题,怎么回事呢? ----------------解决思路与办法-------------------------

(1)查看数据库,这些字段的内容写入是没有问题的;

(2)再看数据库,发现跟数据类型无关,因为有其它一个字段,同样是varchar类型,能正常读取; (3)按照后台发布文章的执行过程,来查看问题。 首先中间经过多个步骤,来到 /include/arc.archives.class.php 这个类文件。测试发现能正常读取到附加表的字段信息,见下面2张图: dede自定义模型的部分字段无法读取 - php之路 - php学习,SEO及二次开发   dede自定义模型的部分字段无法读取 - php之路 - php学习,SEO及二次开发  说明一下:我标题所说的,就是actor和master字段的内容无法读取出来 (4)再继续按执行过程往下走,发现,将 $row 赋值给 $this->Fields 属性(也是数组)时,这两个字段没有赋值过去,而其它都能正常赋值,问题就出来在这里了。我们来分析一下,是怎么出问题的。 发现 $this->Fields[$nk] = $this->ChannelUnit->MakeField($k, $row[$k], $ctag); 这句有问题。 dede自定义模型的部分字段无法读取 - php之路 - php学习,SEO及二次开发   (5)分析 /include/Channelunit.class.php的 MakeField()方法 最终找到问题所在,原来如果字段类型为 text ,那dedecms 会经过 HtmlReplace()方法进行处理,很不幸,如果是该text数据类型,为中文转换是有问题的,而如果是数字,htmlreplace后是没有问题的,这就是为什么,我的附加表上有些是 varchar数据类型,却能正常显示。 下一步就是分析 dedecms 的 HtmlReplace()函数了。原文转自 php之路日志 (责任编辑:www.qewang.com)

 

    祈网科技凭借多年的网站建设经验,坚持以“帮助中小企业实现网络全网营销”为宗旨,成功的为数千多家的中小企业实现互联网盈利,得到了客户的一致好评。如你有任何关于网站建设的疑问,请立即点击咨询祈网科技资深营销专家或拨打免费咨询热线:18670727589,我们会详细为你一一解答你心中的疑难。 在线咨询