全国服务热线
400-0478-010
帮助中心

duxcms2.1程序关于首页和标签页面不支持扩展字段的解决方法

2015-04-11 点击数:4240 来源: 思异科技 标签:cms

最近有个客户让修改一下他的网站在后台添加了一个扩展的字段二维码,需要在前台显示,鼠标经过图片和右下角的小图的时候显示二维码。这个特效已经有了,但是就是首页和标签页面不显示这个扩展的字段。


原来的图片是不显示的。就已第二个为例子。

这是鼠标经过时候需要显示的效果。

看看了官方的手册,扩展字段只是在列表页面和内容页面显示。觉得这样很不好,首页调用列表很多的。

然后看了一下程序,觉得碎片的模块写这个功能很实用。就用这个碎片的功能来写。

就是红线标注的位置和碎片的标签形式基本一样。剩下的就是在核心程序里面写代码了。

主要修改的有2个地方。第一个地方,首先在首页加入这个函数让程序支持。在目录/app/duxcms/service/LabelService.php 的文件里面,找到碎片这个函数,在它的上面加这样一段就行了。



public function erweima($data)
    {
        if(empty($data['e_id'])){
            return ;
        }
        $info = target('duxcms/FieldsetExpand')->geterweima(2,$data['e_id']);
        if(empty($info)){
            return ;
        }
        return $info['erweima_pic'];
    }

然后保存,我们来看看代码,很简单,在info这里需要的是FieldsetExpand这个文件。这个文件在/app/duxcms/model/FieldsetExpandModel.php 里面。


在FieldsetExpandModel.php的最后写如下代码。可以复制上面的。

复制下面的代码:



public function geterweima($fieldsetId=2,$dataId)
    {
        //获取模型信息
        $fieldsetInfo = target('duxcms/FieldsetExpand')->getInfo($fieldsetId);
        if(empty($fieldsetInfo)){
            return ;
        }
        //获取字段内容
        target('duxcms/FieldData')->setTable('ext_'.$fieldsetInfo['table']);
        $extInfo = target('duxcms/FieldData')->getInfo($dataId);
        if(empty($extInfo)){
            return ;
        }
        //获取字段列表
        $where = array();
        $where['A.fieldset_id'] = $fieldsetId;
        $fieldList = target('duxcms/FieldExpand')->loadList($where); 
        if(empty($fieldList)){
            return ;
        }
        $extArray = array();
        foreach ($fieldList as $value) {
            $extArray[$value['field']] = target('duxcms/FieldData')->revertField($extInfo[$value['field']],$value['type'],$value['config']);
        }
        return $extArray;
    }

大家也看到了,我的代码里面有两个2,这两个2代表的意思是你这个扩展字段在你数据表dux_fieldset 里面的对应ID这个可以写成变量的形式。具体自己写就好了。把两个2都改成变量的形式就好。

然后就可以了。很简单的运用。如果你有什么问题可以咨询我们 QQ:81070149

思异科技专业网站建设,仿站,二次开发等服务。