不以解决问题的学习都是耍流氓,今天既然遇到了这个问题,就应该想办法解决。首先我看了一下这样改动之后会产生的影响。第一,既然是这样的栏目可能是给外部的人用,所以要让之前所拥有的用户栏目授权不受影响,这样是最好了,因为我看了一下这个授权栏目的规则,其实就是通过一个admin表的typeID字段,只要指定一个或多个二级栏目的ID,就可以在栏目管理,和发布文章,编辑文章的模块检索出这个ID对应的一级栏目ID和其下所有的多级栏目ID,进行授权,这样他就可以管理这个整个的二级栏目了,那么我们要保证之前的所有用户的这个规则不变,而又对新加的这用外部用户定义一个新的规则。之前写的url过滤,也是为了防止这些外部用户的。第二,要同时修改文章发布和文章编辑的文章栏目选项。所以,我们就要对这些用户加以区分了,区分内部用户和外部用户,所以我们可以在admin加一个字段。具体做法如下:我只是简单将一下,这里提供下载,将对应的文件覆盖一下就可以了。
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模板,在安全验证串的后面加这样一个单选框
因为织梦已经自动将提交的name获取,所以这里$yesno可以直接用。这访问,我们要添加授权用户选是就可以了。这里要注意的是,如果你选一个三级栏目,必须要将其所有的上级栏目选中,这样我们在下面的显示的时候才能正常使用。
3、这样就可以将栏目的ID写入admin表的typeID了。下面要改的就是后台核心-网站栏目管理的显示了。我们要让其只显示他授权的栏目。为了不影响以前的账户,那么我们可以做一下分流,通过这个yesno字段。栏目管理首先访问的是catalog_main.PHP这个文件,我们就在这里做分流,让以前的不变,新加的访问新的模板和函数,我是将这个文件整体改为这样
PHPrequire_once(dirname(__file__)."/config.PHP");
//读取用户的新定义类型
global $dsql;
$ID = $_SESSION['dede_admin_ID'];
$dsql->Setquery("select `yesno` from `dedecp_admin` where `ID` = $ID limit 0,1");
$dsql->Execute();
$row = $dsql->Getobject();
if(1==$row->yesno){
require_once(DEDEINC."/typeunit.class.admin1.PHP");
$userChannel = $cuserLogin->getUserChannel();
include DedeInclude('templets/catalog_main1.htm');
}else{
require_once(DEDEINC."/typeunit.class.admin.PHP");
$userChannel = $cuserLogin->getUserChannel();
include DedeInclude('templets/catalog_main.htm');
}12345678910111213141516 require_once(dirname(__file__)."/config.PHP");//读取用户的新定义类型global $dsql;$ID = $_SESSION['dede_admin_ID'];$dsql->Setquery("select `yesno` from `dedecp_admin` where `ID` = $ID limit 0,1");$dsql->Execute();$row = $dsql->Getobject();if(1==$row->yesno){ require_once(DEDEINC."/typeunit.class.admin1.PHP"); $userChannel = $cuserLogin->getUserChannel(); include DedeInclude('templets/catalog_main1.htm');}else{ require_once(DEDEINC."/typeunit.class.admin.PHP"); $userChannel = $cuserLogin->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->Setquery("select `yesno` from `dedecp_admin` where `ID` = $ID limit 0,1");
$dsql->Execute();
$row = $dsql->Getobject();
if(1==$row->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->Setquery("select `yesno` from `dedecp_admin` where `ID` = $ID limit 0,1"); $dsql->Execute(); $row = $dsql->Getobject(); if(1==$row->yesno){ include DedeInclude("templets/article_add1.htm"); }else{ include DedeInclude("templets/article_add.htm"); }
然后在article_add1.htm中只是将$typeOptions = GetoptionList($cID,$channelID);改为$typeOptions = GetoptionList2($cID,$channelID);,然后在inc_catalog_options.PHP新定义了两个方法,这个大家可以下载看一下。同理编辑也是这样。到这里基本就完了,我的是织梦5.7的,不知道有没有版本问题,写来就是交流一下,其实写的真的很一般,大家多多交流。 总结
以上是内存溢出为你收集整理的织梦dedecms新增栏目如何无限分类全部内容,希望文章能够帮你解决织梦dedecms新增栏目如何无限分类所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
赞
(0)
打赏
微信扫一扫
支付宝扫一扫
织梦系统dedecms一劳永逸的安全代码
上一篇
2022-05-25
dedecms5.7织梦系统首页sql调用disucuz2.5内容
下一篇
2022-05-25
评论列表(0条)