建站学习网,专业提供各类建站教程,网页素材,SEO资讯等建站资源!

网站模板_网站源码_网站素材_建站教程_建站学习网

当前位置:建站学习网 > 织梦教程 > 二次开发 >

DedeCMS增加notypeid属性以实现过滤栏目

更新时间:2017-05-23整理编辑:建站学习网阅读:0
  建站学习网最近在做一个网站的时候,因为要在首页调用全站最新栏目,所以在arclist标签中把typeid属性设置为rand,生成首页后,发现自己不想调用的栏目也被调用出来,如果要单独去掉这个栏目就要在typeid中把我想要的栏目id全部加上,这样就很麻烦。想到既然arclist支持flag和noflag,那么应该也要支持typeid 和notypeid吧?
 
  经过一番测试,建站学习网再跟踪了一下源码,发现织梦并不支持notypeid,那怎么办?只有二次开发一下了,在搜索了一些教程后,建站学习网找到解决方法:
 
  打开/include/taglib/arclist.lib.php文件,找这段代码(大概在130行):
return lib_arclistDone
(
    $refObj, $ctag, $typeid, $ctag->GetAtt('row'), $ctag->GetAtt('col'), $titlelen, $infolen,
    $ctag->GetAtt('imgwidth'), $ctag->GetAtt('imgheight'), $listtype, $orderby,
    $ctag->GetAtt('keyword'), $innertext, $envs['aid'], $ctag->GetAtt('idlist'), $channelid,
    $ctag->GetAtt('limit'), $flag,$ctag->GetAtt('orderway'), $ctag->GetAtt('subday'), $ctag->GetAtt('noflag'),
    $tagid,$pagesize,$isweight
 );
 
  在最后括号最后加上(注意前面的逗号):
,$ctag->GetAtt('notypeid')
  然后再找到这一段代码(大概在168行):
function lib_arclistDone(&$refObj, &$ctag, $typeid=0, $row=10, $col=1, $titlelen=30, $infolen=160,
                $imgwidth=120, $imgheight=90, $listtype='all', $orderby='default', $keyword='',
                $innertext='', $arcid=0, $idlist='', $channelid=0, $limit='', $att='', $order='desc', $subday=0, $noflag='',$tagid='',
  在括号的最后加上(注意前面的逗号):
,$notypeid=0
  最后再找到这一句(大概在321行):
$orwheres[] = ' arc.arcrank > -1 ';
  在其前面增加以下代码:
if(!empty($notypeid))
{
    $orwheres[] = " and arc.typeid NOT IN (".GetSonIds($notypeid).")";
}
  这样,代码就修改完毕了。
 
  保存之后就在arclist标签里试试看notypeid属性吧。对于网站栏目多,内容显示时又错综复杂的情况,这样的属性还是蛮实用的。
 
  使用方法:
{dede:arclist row=6 orderby=pubdate type='image.' imgwidth='108' imgheight='150' channelid='1' notypeid='9'}
 
  如果要过滤多个栏目则可以这样:
{dede:arclist row=6 orderby=pubdate type='image.' imgwidth='108' imgheight='150' channelid='1' notypeid='9,10,11'}

本文网址:https://www.dedexuexi.com/dedejiaocheng/eckf/3231.html

本站部分文章搜集与网络,如有侵权请联系本站,转载请说明出处。

收藏此文 赞一下!() 打赏本站

如本文对您有帮助,就请建站学习网抽根烟吧!

支付宝打赏
微信打赏
DedeCMS搜索页面单独调用搜索结果条数的实现方法
« 上一篇2017年05月23日
织梦CMS限制自定义表单24小时只能提交一次的方法
2017年05月23日下一篇 »
  • 织梦DedeCMS列表页第一页跟其它页使用不同模板的办法
    0阅读
    有时候我们需要让织梦列表页的第一页跟第二页以及后面的页面的展示效果不同,使用不同的模板,但是目前网上也没有其他比较好的方案,那么下面织梦学习网就给大家介绍一个最简单的办法
  • 织梦dedecms自定义表单导出到excel
    0阅读
    导出效果 不写死任何字段,不写死任何东西,修改2个文件,让织梦自定义表单自由导出到Excel表格里。 教程开始 1、\ dede\templets\diy_main.htm 找到前台预览在它的下面加入一行 a href=diy_list.php?action=exceldiyid={dede:fie...
  • 织梦dedecms后台自定义表单添加搜索功能
    0阅读
    自定义表单搜索效果 当你的自定义表单数据过多或者需要查询某个单时,给后台的自定义表单加个简单的搜索功能很有必要。 1、打开 \dede\templets\diy_main.htm 找到 内容列表/div 在它的下面加入 div class=bodytitletxt style=padding-lef...
  • 织梦dedecms地区联动在当前页面title加入选择的地区名
    0阅读
    织梦分类信息模型在列表页选择地区联动时,想要在title北京市东城区学院 - 我的网站/title 或者 title广东省广州市白云区学院_我的网站/title 效果展示 打开 \include\arc.sglistview.class.php 找到 $this-Fields[typeid] = $...
  • 织梦CMS中添加一个函数来实现任意字段的调用
    0阅读
    我们在使用织梦建站的时候,很多情况下,因为Dede底层模版的限制,我们在文章页、列表页和频道页面中想要调用一些相关的字段会有所限制,所以就想写一个函数来实现在任意页面对任意字
 
QQ在线咨询