首页建站经验 DedeCMS V5.7自定义联动字段调用条件筛选解决方法

DedeCMS V5.7自定义联动字段调用条件筛选解决方法

方法来源:http://bbs.dedecms.com/265155.html  完善版:hinesey 非常感谢原作者的方法,解决了我一部分的疑问。以下是我重新总结的方法! 原作者用的是V5.6版本,和V5.7版本有一…

方法来源:http://bbs.dedecms.com/265155.html  完善版:hinesey

非常感谢原作者的方法,解决了我一部分的疑问。以下是我重新总结的方法!

原作者用的是V5.6版本,和V5.7版本有一点点不同,最初按照原始的方法改了,但发现出错,而且某些地方还不够完善,于是我将每处改过的地方都看了一遍重新编辑过,我的是改进过的完整方法,将不完善的地方都改进了。测试的系统版本是DedeCMS V5.7(其他版本未测试过),调用页面是自定义内容模型的列表页(这里用到的是list_sale.htm)。

========================================================================================

 

先归纳一下,要改动的文件有4个(不包括列表页的模板文件),修改前先做好备份。以下所有代码中将“自定义联动字段名”改为你要添加的自定义联动类别的字段名,例如:new_type。

/include/taglib/infolink.lib.php

/plus/list.php

/include/arc.sglistview.class.php

/include/taglib/infoguide.lib.php

========================================================================================

 

一、修改/include/taglib/infolink.lib.php文件,这个文件需要修改多处,注意看清楚。

1、搜索源代码(约在第26行):

require_once(DEDEDATA.'/enums/infotype.php');

在下面换行加上:

require_once(DEDEDATA.'/enums/自定义联动字段名.php');

2、搜索(约在第30行):

global $dsql,$nativeplace,$infotype,$hasSetEnumJs,$cfg_cmspath,$cfg_mainsite;

global $em_nativeplaces,$em_infotypes;

改为:

global $dsql,$nativeplace,$infotype,$自定义联动字段名,$hasSetEnumJs,$cfg_cmspath,$cfg_mainsite;

global $em_nativeplaces,$em_infotypes,$em_自定义联动字段名s;  //看清楚,这里后面的个S

$fields = array('nativeplace'=>'','infotype'=>'','自定义联动字段名'=>'','typeid'=>$typeid, 'channelid'=>$channelid,'linkallplace'=>'','linkalltype'=>'','linkeall自定义联动字段名'=>'');

$fields['nativeplace'] = $fields['infotype'] = $fields['自定义联动字段名'] = '';

3、搜索:

$fields = array('nativeplace'=>'','infotype'=>'','typeid'=>$typeid,

            'channelid'=>$channelid,'linkallplace'=>'','linkalltype'=>'');

$fields['nativeplace'] = $fields['infotype'] = '';

改为:

$fields = array('nativeplace'=>'','infotype'=>'','自定义联动字段名'=>'','typeid'=>$typeid,

            'channelid'=>$channelid,'linkallplace'=>'','linkalltype'=>'','自定义联动字段名'=>'');

$fields['nativeplace'] = $fields['infotype'] = $fields['自定义联动字段名'] = '';

4、搜索(约在第76行):

$fields['linkallplace'] = "不限";

$fields['linkalltype'] = "不限";

改为:

$fields['linkallplace'] = "不限";

$fields['linkalltype'] = "不限";

$fields['linkall自定义联动字段名'] = "不限";

5、//地区链接,搜索(约在86行):

$fields['nativeplace'] .= " {$em}/r/n";

改为:

$fields['nativeplace'] .= " {$em}/r/n";

搜索(约在94行):

$fields['nativeplace'] = " {$em_nativeplaces[$toptype]} >> ";

改为:

$fields['nativeplace'] = " {$em_nativeplaces[$toptype]} >> ";

搜索(约在102行):

$fields['nativeplace'] .= " {$em}/r/n";

改为:

$fields['nativeplace'] .= " {$em}/r/n";

6、//小分类链接,搜索(约在119行):

$fields['infotype'] .= " {$em}/r/n";

改为:

$fields['infotype'] .= " {$em}/r/n";

搜索(约在127行):

$fields['infotype'] .= "{$em_infotypes[$toptype]} >> ";

改为:

$fields['infotype'] .= "{$em_infotypes[$toptype]} >> ";

搜索(约在134行):

$fields['infotype'] .= " {$em}/r/n";

改为:

$fields['infotype'] .= " {$em}/r/n";

7、搜索(约在140行):

if(is_array($ctp->CTags))

在上面换行添加:

//自定义联动类别字段链接

    if(empty($自定义联动字段名))

    {

       foreach($em_自定义联动字段名s as $eid=>$em)

       {

            if($eid % 500 != 0) continue;

            $fields['自定义联动字段名'] .= " {$em}";

        }

    }

    else

    {

       $sontype = ( ($自定义联动字段名 % 500 != 0) ? $自定义联动字段名 : 0 );

       $toptype = ( ($自定义联动字段名 % 500 == 0) ? $自定义联动字段名 : ( $自定义联动字段名-($membertype%500) ) );

       $fields['自定义联动字段名'] = "{$em_自定义联动字段名s[$toptype]} ";

       foreach($em_自定义联动字段名s as $eid=>$em)

       {

            if($eid < $toptype+1 || $eid > $toptype+499) continue;

            if($eid == $自定义联动字段名) {

                $fields['自定义联动字段名'] .= " {$em}";

            }

            else {

                $fields['自定义联动字段名'] .= " {$em}";

            }

        }

}

 

二、修改/plus/list.php文件。

1、搜索(约在39行):

$infotype = ( (empty($infotype) || !is_numeric($infotype)) ? 0 : $infotype );

在下面换行加上:

$自定义联动字段名 = ( (empty($自定义联动字段名) || !is_numeric($自定义联动字段名)) ? 0 : $自定义联动字段名 );

2、搜索(约在44行):

if(!empty($infotype)) $cArr['infotype'] = $infotype;

在下面换行加上:

if(!empty($自定义联动字段名)) $cArr['自定义联动字段名'] = $自定义联动字段名;

 

三、修改/include/arc.sglistview.class.php文件。

搜索(约在208行):

if(!empty($this->searchArr['keyword']))

在上面换行添加:

//自定义联动类别

      if(!empty($this->searchArr['自定义联动字段名']))

            {

                if($this->searchArr['自定义联动字段名'] % 500 ==0 )

                {

                    $naddQuery .= " And arc.自定义联动字段名 >= '{$this->searchArr['自定义联动字段名']}' And arc.自定义联动字段名 < '".($this->searchArr['自定义联动字段名']+500)."'";

                }

                else

                {

                    $naddQuery .= "And arc.自定义联动字段名 = '{$this->searchArr['自定义联动字段名']}'";

                }

           }

 

四、修改/include/taglib/infoguide.lib.php文件。

搜索(约在80行):

$fields['infotype'] .= '<script language="javascript">MakeTopSelect("infotype", '.$infotype.');</script>'."/r/n";

在下面换行添加:

$fields['自定义联动字段名'] .= "/r/n";

$fields['自定义联动字段名'] .= "类型:/r/n";

$fields['自定义联动字段名'] .= "
/r/n";

$fields['自定义联动字段名'] .= "<script language='javascript' type='text/javascript' src='{$cfg_mainsite}{$cmspath}data/enums/自定义联动字段名.js'></script>/r/n";

$fields['自定义联动字段名'] .= '<script language="javascript">MakeTopSelect("自定义联动字段名", '.$自定义联动字段名.');</script>'."/r/n";

 

五、在列表页模板里调用,CSS样式自行修改。

{dede:infolink}

      

             

      

      

             

             

             

      

      

             

      

      

             

             

             

      

      

             

      

      

             

             

             

      

      

             

      

{/dede:infolink}

 

六、哎,终于弄完了,好累啊!

hinesey_2012.10.25.

 

DedeCMS V5.7自定义联动字段调用条件筛选解决方法

本文来自网络,不代表1号站长-站长学院|资讯交流平台立场。转载请注明出处: https://www.1cn.cc/jianzhan/jingyan/21158.html
上一篇dedecms在其它页面调用单页文章内容的方法
下一篇 dede5.6跳转地址及链接地址长度修改的方法
admin

作者: admin

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部