您当前的位置: 主页 > 优化教程
用织梦做过比较大型的网站,或者建过多级栏目,并且对用户进行栏目授权的人可能遇到过,织梦默认的是高只能授权到二级栏目,再往下分就不可以了。这样就将整个指定的二级栏目及其下级的所有栏目都授权给了这个用户,但是有的时候,我们想要单独的给其授权某一个三级栏目或者四级栏目。那么目前织梦的这个栏目设置就不合适了。所以今天因为工作的需要我做了一下改动。
 
不以解决问题的学习都是耍流氓,今天既然遇到了这个问题,就应该想办法解决。首先我看了一下这样改动之后会产生的影响。,既然是这样的栏目可能是给外部的人用,所以要让之前所拥有的用户栏目授权不受影响,这样是好了,因为我看了一下这个授权栏目的规则,其实就是通过一个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模板,在安全验证串的后面加这样一个单选框
<tr>
<td height=”30″>是否为外部编辑人员:</td>
<td style=”text-align:left;”>
<input type=”radio” name=”yesno” checked value=”0″ />否&nbsp;&nbsp;
<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的,不知道有没有版本问题,写来就是交流一下,其实写的真的很一般,大家多多交流。
 

关键词:dede,新增,栏目,如何,无限,分类,用织,梦做,过,    标签:
    更多资讯请收藏关注 网站模板(www.1yc.cn)

网站导航栏目的设计制作方向主要注意哪些规划?网站导航栏目的设计制作方向主要注意以下三个方面的内容,今天就由重庆网站... 2022-02-16
织梦dede标签:arclist标签使用大全arclist是织梦网站建设计系统中重要的标签,同时也是基础的标签... 2021-09-25
dede文章标题字数限制的方法织梦系统默认的文章标题字数限制是60,也就是30个汉字,不够用怎么办?... 2021-09-19
织梦调用指定的多个栏目导航我们在仿站的过程中。经常会遇到需要调用多个指定的栏目导航,那我们如... 2021-09-19
教程:dede输出织梦全站RSS文件的方法织梦后台默认生成更新RSS文件是按照网站栏目生成告诉用户每个栏目的RS... 2021-09-16
dede获取文件名函数bug的解决方法织梦获取文件名函数bug的解决方法,这个bug可以说几乎不影响任何使用... 2021-09-16
关于面包屑导航栏目链接相对路径的修改关于面包屑导航栏目链接相对路径的修改方法 好吧,自己解决了,现在写出来... 2021-09-15
dedecms默认网站地图sitemap.html优化网站地图对于网站优化很重要,搜索引擎就是靠网站地图去收录网站页面,本文... 2021-09-15
织梦dedecms文章标题字数限制的解决方法织梦系统默认的文章标题字数限制是60,也就是30个汉字,不够用怎么办?... 2021-09-13
织梦生成时出现 DedeTag Engine Create 更新栏目时出现 DedeTag Engine Create File ... 2021-09-12
织梦列表页如何调用好评差评要想在列表页调用好评差评和中立。掌握了这个功能可以在一定程度上提搞织梦... 2021-07-22
织梦模板DEDECMS网站更改data文件夹名称增加安全近dedecms漏洞频繁出现,织梦官方也给出了很多相应的措施。今天 ... 2021-07-22
织梦二次开发中几个标签的应用在织梦里面对于数组进行循环的标签有好几个,在前台模板即使用静态模板引擎... 2021-07-27
织梦一键清空自定义表单垃圾信息方法一招清空DEDECMS自定义表单所有数据且以后新增加表单数据ID从1开... 2021-07-22
织梦cms复制页面内容,自动在后面加上网址dedecms织梦COPY页面内容,自动在后面加上网站信息,利于SEO... 2021-07-27
dedecms5.7调用会员登录 显示登陆状态一下代码就是 调用会员登陆状态,退出,显示注册和登陆 {dede:ph... 2021-07-27
织梦dedecms上传图片出现image info error的解决方法织梦dedecms上传图片出现image info error的解决方... 2021-07-22
织梦后台编辑器div标签自动转P标签的方法从记事本里复制的文字。放到编辑器发布后。段落会自动加上DIV。下面方法... 2021-07-22
织梦channel导航标签不支持typeid指定栏目解决办法{/dede:channel} 但是很多情况下需要单独指定栏目(比如:... 2021-07-22
织梦dedecms自由列表freelist调用增加随机排序方式很多站长在用到织梦的自由列表功能时,会发现其排序方式比较单一,不能满足... 2021-07-22
dedecms织梦模板后台编辑器将回车&amp;lt;br&amp;gt;改为&amp;lt;p&amp;gt;的方法DEDECMS编辑器默认回车[确认键]是返回br /这样的。 有时候我... 2021-07-22
DEDE织梦文章和列表页均使用拼音,使之更适合于SEO的解决方案一、DEDE 修改默认文章命名规则 1、单独添加分类默认修改,修改文件... 2021-07-27

线
咨询热线:
135-0038-3336
在线客服:
点击这里给我发消息
微信交流:
公司官网: www.1yc.cn