织梦dedecms如何实现新增栏目无限分类

92建站   2021-03-25   收藏本文

本文介绍了织梦dedecms如何实现新增栏目无限分类,要修改的地方很多,而且有些地方是通过SQL语句修改的,对此不熟悉的朋友建议不要动手,以免出现问题。当然,如果想试的也可以提前备份数据,出问题再改回来就是了。

织梦dedecms如何实现新增栏目无限分类?下面92建站小编就来说说在网上找到的解决办法。

具体做法如下:

1、给admin表增加一个字段区分授权用户。我加的是一个‘yesno’字段,1为授权用户,默认为0。如果你不能直接操作数据库可用sql语句 

PHPALTER TABLE  `dede_admin` ADD  `yesno` SMALLINT( 1 ) NOT NULL DEFAULT  '0' AFTER  `loginip`1 ALTER TABLE  `dede_admin` ADD  `yesno` SMALLINT( 1 ) NOT NULL DEFAULT  '0' AFTER  `loginip` 

2、修改系统用户管理的添加账户操作, 

这个是我修改之后将所有的栏目读出,默认的是只读到第二级栏目。做法是借鉴了文章发布时的栏目选择。 

a.找到sys_admin_user_add.php这个文件,在头部加上这一句,require_once(DEDEADMIN.’/inc/inc_catalog_options.php’);进而加载必要的函数, 

b.z找到$dsql->Execute(‘op’);将从他到include DedeInclude(‘templets/sys_admin_user_add.htm’);之间的部分不包括这两个东东,换成$typeOptions .= GetOptionList(0,$cuserLogin->getUserChannel(),0)。这个你可以看一下,模板中通过$typeOptions得到的这些栏目列表,这个GetOptionList函数就能获得所哟的栏目。这你访问sys_admin_user_add.php这个文件时就出来所有的栏目了。 

3、第一步我们增加了一个yesno字段,那么我们这里就应该在添加账户时用到了,找到sys_admin_user_add.htm模板,在安全验证串的后面加这样一个单选框<tr><td height="”30″">是否为外部编辑人员:</td><td style="text-align:left;"><input type="”radio”" name="”yesno”" checked="checked" value="”0″" />否   <input type="”radio”" name="”yesno”" value="”1″" />是</td></tr>,然后在sys_admin_user_add.php文件的if($dopost==’add’)条件里面的$inquery改为这样 

PHP$inquery = "INSERT INTO `dedecp_admin`(id,usertype,userid,pwd,uname,typeid,tname,email,yesno)VALUES('$mid','$usertype','$userid','$pwd','$uname','$typeid','$tname','$email','$yesno'); ";1 $inquery = "INSERT INTO `dedecp_admin`(id,usertype,userid,pwd,uname,typeid,tname,email,yesno)VALUES('$mid','$usertype','$userid','$pwd','$uname','$typeid','$tname','$email','$yesno'); "; 

因为织梦已经自动将提交的name获取,所以这里$yesno可以直接用。这访问,我们要添加授权用户选是就可以了。这里要注意的是,如果你选一个三级栏目,必须要将其所有的上级栏目选中,这样我们在下面的显示的时候才能正常使用。 

3、这样就可以将栏目的id写入admin表的typeid了。下面要改的就是后台核心-网站栏目管理的显示了。我们要让其只显示他授权的栏目。为了不影响以前的账户,那么我们可以做一下分流,通过这个yesno字段。栏目管理首先访问的是catalog_main.php这个文件,我们就在这里做分流,让以前的不变,新加的访问新的模板和函数,我是将这个文件整体改为这样 

PHPrequire_once(dirname(__FILE__)."/config.php"); 

//读取用户的新定义类型 

global $dsql; 

$id = $_SESSION['dede_admin_id']; 

$dsql-&gt;SetQuery("select `yesno` from `dedecp_admin` where `id` = $id limit 0,1"); 

$dsql-&gt;Execute(); 

$row = $dsql-&gt;GetObject(); 

if(1==$row-&gt;yesno){ 

 require_once(DEDEINC."/typeunit.class.admin1.php"); 

 $userChannel = $cuserLogin-&gt;getUserChannel(); 

 include DedeInclude('templets/catalog_main1.htm'); 

}else{ 

 require_once(DEDEINC."/typeunit.class.admin.php"); 

 $userChannel = $cuserLogin-&gt;getUserChannel(); 

 include DedeInclude('templets/catalog_main.htm'); 

}12345678910111213141516 require_once(dirname(__FILE__)."/config.php");//读取用户的新定义类型global $dsql;$id = $_SESSION['dede_admin_id'];$dsql-&gt;SetQuery("select `yesno` from `dedecp_admin` where `id` = $id limit 0,1");$dsql-&gt;Execute();$row = $dsql-&gt;GetObject();if(1==$row-&gt;yesno){    require_once(DEDEINC."/typeunit.class.admin1.php");    $userChannel = $cuserLogin-&gt;getUserChannel();    include DedeInclude('templets/catalog_main1.htm');}else{    require_once(DEDEINC."/typeunit.class.admin.php");    $userChannel = $cuserLogin-&gt;getUserChannel();    include DedeInclude('templets/catalog_main.htm');} 

这样通过yesno字段,让授权用户访问新的catalog_main1.html模板,下面我们就看一下这个模板和这个typeunit.class.admin1.php怎么写的需要用的文章我都打包好可以有需要和我联系。只有照着里面说明上传一下就可以。其实我的改动就是将一些敏感的东西去掉了一下等等。有兴趣的可以看一下,改动比较多的是typeunit.class.admin1.php这个文件,从新定义了一下他的读取规则。 

5、然后就是文章添加和编辑的修改,在这里,我都是进行了一下用户类型的判断,进而调取不同的操作。以文章添加为例,找到article_add.php。在($dopost!=’save’)的操作中,最后的加上 

PHPglobal $dsql; 

 $id = $_SESSION['dede_admin_id']; 

 $dsql-&gt;SetQuery("select `yesno` from `dedecp_admin` where `id` = $id limit 0,1"); 

 $dsql-&gt;Execute(); 

 $row = $dsql-&gt;GetObject(); 

 if(1==$row-&gt;yesno){ 

     include DedeInclude("templets/article_add1.htm"); 

 }else{ 

  include DedeInclude("templets/article_add.htm"); copyright dedecms 

 }12345678910 global $dsql;    $id = $_SESSION['dede_admin_id'];    $dsql-&gt;SetQuery("select `yesno` from `dedecp_admin` where `id` = $id limit 0,1");    $dsql-&gt;Execute();    $row = $dsql-&gt;GetObject();    if(1==$row-&gt;yesno){        include DedeInclude("templets/article_add1.htm");    }else{        include DedeInclude("templets/article_add.htm");    } 

然后在article_add1.htm中只是将$typeOptions = GetOptionList($cid,$cuserLogin->getUserChannel(),$channelid);改为$typeOptions = GetOptionList2($cid,$cuserLogin->getUserChannel(),$channelid);,然后在inc_catalog_options.php新定义了两个方法,这个大家可以下载看一下。同理编辑也是这样。到这里基本就完了,我的是织梦5.7的,不知道有没有版本问题,写来就是交流一下,其实写的真的很一般,大家多多交流。

上面就是织梦无限分类的介绍,若有疑问可以找小编进一步探讨交流~

TAG标签: 织梦无限分类
展开