• 全国400电话网上服务平台
    强大号码库资源任选,方便,快捷,快速开通。
    咨询热线:400-1100-266  

    织梦dedecms图片联动筛选教程
    POST TIME:2021-05-23 02:38

    这标题起的好像不太好理解,什么是使用图片联动筛选?正常织梦的联动筛选是如下图所示:

     

    现在我们要实现的目标是把第一行筛选变成用图片代替文本的筛选

    若不会织梦dedecms筛选,请看教程:http://www.dede58.com/a/dedejq/9143.html

    思路:

    思路1: 可不可以在添加字段时直接使用<img src="">作为筛选的字段值?这是一个网友问题这个问题时,我第一时间想到的,但是,经过测试这样不可以。

     

    思路2:可不可以根据生成的筛选链接直接在模板里面添加<img src="">,代码如下所示:

    <a title="红色" href="/plus/list.php?tid=5&yanse=%E7%BA%A2%E8%89%B2"><img src="/sx00.gif"></a>

    复制代码

     

      这样看上去就可以了,但是,要注意这样就把筛选写死了,而筛选是动态的,也就是选择不同的颜色就会有不同的内容,而且,还与下面的“类型”筛选是联动的,所以,固定好只能筛选一次,这种方法行不通。

     

      思路3:上面两种方法试了以后,那接下来唯一要做的就是要修改php代码了,在include目录里面找到文件extend.func.php(这个文件是已经二次开发过的具体的代码请看上面给的教程连接),找到函数 AddFilter($channelid, $type=1, $fieldsnamef, $defaulttid, $loadtype='autofield')

    我们在前网页前台看到的筛选连接就是这个函数生成的,所以,只要改这个函数就可以了。

     

      找到代码:switch ($type)

      把这个switch里面的代码全部替换成如下代码:

                   

    switch ($type) {
                        case 1:
                            $dede_addonfields .= (preg_match("/&".$ctag->GetName()."=/is",$filterarr,$regm) ? '<a title="全部" href="'.str_replace("&".$ctag->GetName()."=".$fields_value,"",$filterarr).'">全部</a>' : '<span>全部</span>').' ';
                        
                            $addonfields_items = explode(",",$ctag->GetAtt('default'));
                            for ($i=0; $i<count($addonfields_items); $i++)
                            {
                                $href = stripos($filterarr,$ctag->GetName().'=') ? str_replace("=".$fields_value,"=".urlencode($addonfields_items[$i]),$filterarr) : $filterarr.'&'.$ctag->GetName().'='.urlencode($addonfields_items[$i]);//echo $href;
                                $dede_addonfields .= ($fields_value!=urlencode($addonfields_items[$i]) ? '<a title="'.$addonfields_items[$i].'" href="'.$href.'"><img src="/sx0'.$i.'.gif"></a>' : '<span><img src="/sx0'.$i.'.gif"></a></span>')." ";
                            }
                            $dede_addonfields .= '<br/>';
                        break;
                        
                        case 2:
                                $dede_addonfields .= (preg_match("/&".$ctag->GetName()."=/is",$filterarr,$regm) ? '<a title="全部" href="'.str_replace("&".$ctag->GetName()."=".$fields_value,"",$filterarr).'">全部</a>' : '<span>全部</span>').' ';
                        
                            $addonfields_items = explode(",",$ctag->GetAtt('default'));
                            for ($i=0; $i<count($addonfields_items); $i++)
                            {
                                $href = stripos($filterarr,$ctag->GetName().'=') ? str_replace("=".$fields_value,"=".urlencode($addonfields_items[$i]),$filterarr) : $filterarr.'&'.$ctag->GetName().'='.urlencode($addonfields_items[$i]);//echo $href;
                                $dede_addonfields .= ($fields_value!=urlencode($addonfields_items[$i]) ? '<a title="'.$addonfields_items[$i].'" href="'.$href.'">'.$addonfields_items[$i].'</a>' : '<span>'.$addonfields_items[$i].'</span>')." ";
                            }
                            $dede_addonfields .= '<br/>';
                        break;
                    }

     

      已经成功实现了,上面的“全部”和第一张图片不显示,不是因为不对,而是我没有添加上图片,只加了三张图片,您可以找到相应的图片,直接放到根目录即可。

     

      “全部”可以在上面的代码把全部替换成<img src="">即可,可以参考上面我替换好的:

    <img src="/sx0'.$i.'.gif"></a>

     

    注意:

      您的图片必须以00.gif,01.gif这样的顺序起名;

      图片请放在根目录里面,如果您想放到根目录里面其它目录里面,请修改上面的图片路径。

      模板调用请使用如下方式:

    {dede:php} AddFilter(1,1,'yanse'); {/dede:php}

    {dede:php} AddFilter(1,2,'leixing'); {/dede:php}

    其中,AddFileter(1,1,'yanse')这里面的第二个数值代表不同的筛选链接,1表示使用图片,2表示文本链接,可以根据需要进行设置。

     

    如果我都使用图片怎么设置,也不难,只需要把上面的case 1:复制一份放到case 2下面并起名为case3,然后,调用方式为:

    {dede:php} AddFilter(1,3,'leixing'); {/dede:php}

    复制代码

    这样就二个筛选就可以使用图片了。


    
    关于我们 | 付款方式 | 建站知识 | 增值服务 | 网站模板
    Copyright © 2003-2016
    时间:9:00-21:00 (节假日不休)
    版权所有:巨人网络(扬州)科技有限公司
    总部地址:江苏省信息产业基地11号楼四层
    《增值电信业务经营许可证》 苏B2-20120278
    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信

    微信号已复制,请打开微信添加咨询详情!