关于织梦CMS的infolink.lib.php和联动的一些浅见

今天用dede试做一个文章列表的联动功能,发现这东西还挺纠结。

1.默认的貌似是写死的,想改变什么都要改代码。

2.默认的是二级的,可是我只要一级。

3.要改的文件还不止一个。

说到底这个东西最后要改的是一个叫infolink的这个标签,你可以找到infolink.lib.php这个文件,通过对这个文件的修改,可以的达到你的目的。

基本操作我就不说了,我是个写html,php是苦手,看到php文件只能一点点缕逻辑。

如果你跟我的情况一样,可以参考我下面的方法。

建立你自己的联动菜单,并在自己的分类模版中建立相关字段(这里要注意一下,字段的类别要选择联动的,不要选择单选、多选或option)。

在include/taglib/下找到infolink.lib.php并打开。

默认是两个菜单。一个是-地区-对应的名字是-nativeplace-,一个是-信息类型-对应的名字是-infotype-。

如果你想替换一个,你可以拿你的字段名称替换掉这里其中的一个(我在这里全部替换了,其实可以不全部替换,如果你弄不明白就按照我的全部替换…)。

然后在include/下找到arc.sglistview.class.php并打开,同样是全部替换掉相应的字段名。

(替换的时候要注意一下$em_infotypes这种格式写出来的后面有个“s”)

最后你就可以在自己的页面上用了。

用法是与原来的没有大变化

{dede:infolink}{/dede:infolink}

只是在引用变量的时候把人家的[field:nativeplace/]改成自己的[field:自定义字段/]

 

________我华丽么——————

 

然后说一下变成一级的问题,网上查到的不太靠谱,我给个我的方法。

还是include/taglib/下找到infolink.lib.php并打开。

找到

$sontype = ( ($nativeplace% 500 != 0) ? $nametype : 0 );
        $toptype = ( ($nativeplace% 500 == 0) ? $nativeplace: ( $nativeplace-($nametype%500) ) );       
        $fields[‘nativeplace’] = “<a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&nativeplace={$toptype}&infotype={$infotype}’> <b>{$em_nativeplace[$toptype]}</b></a> “;
        foreach($em_nativeplaces as $eid=>$em)
        {
            if($eid < $toptype+1 || $eid > $toptype+499) continue;
            if($eid == $nativeplace) {
                $fields[‘nativeplace’] .= ” <b>{$em}</b>rn”;
            }
            else {
                $fields[‘nativeplace’] .= ” <a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&nativeplace={$eid}&infotype={$infotype}’>{$em}</a>rn”;
          }
 }

注释掉(这个字段名我改过了,)

把上面else前面的内容拿过来就好了,如果你懂点代码的话可以自己加判断来确定哪个是选中的,我就不赘述了,有问题可交流。

 

 

 

关于织梦后台各种白屏问题的解决方法

首先查看你的php版本是不是5.4+,织梦版本是不是V57_Sp1,如果是,或者接近,请往下看。

在你的后台目录下的inc子目录中找到userlogin.class.php文件。

然后注释掉所有跟@session_register@session_unregister有关的语句,并注释掉。

再看看你的页面好使没有~

 

我只是解决了白屏问题,不知道这样注释会不会有后遗症,等待php高能人员解答。