在做一个学校的项目,分类有四级分类,总共一百多个分类,因为每个分类对应不同的老师,用于上传资料作为考核,但是添加系统用户的时候发现DEDECMS只有两级分类,所以修改啦一些代码,目前不知道是否修改完全,暂时来看,四级目录授权功能是可以授权的,下面是修改的代码。

1.添加/修改系统用户-展示全部分类

打开dede/sys_admin_user_add.php 和dede/sys_admin_user_edit.php

在顶部下引入文件,具体啥用不清楚,因为之前也是参考别人的文章,我估计不引用也没关系,但是我没时间测试,先这样吧

require_once(dirname(__FILE__)."/config.php");
require_once(DEDEADMIN."/inc/inc_catalog_options.php");  // 引入这行代码

修改底部

$dsql->Execute('op');
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
include DedeInclude('templets/sys_admin_user_add.htm');

替换中间的代码为

$typeOptions .= GetOptionList(0,$cuserLogin->getUserChannel(),0);

  

2.修改include/typeunit.class.admin.php文件

找到

 while($row = $this->dsql->GetObject())
{
if($row->reid==0) continue;
$topidstr .= ($topidstr=='' ? $row->reid : ','.$row->reid);
}

在它下面添加以下代码

/*****************************修改代码,后台管理三级栏目授权开始*******************************/
// 获取所有顶级栏目id
$current_id = (string)$admin_catalogs[0];
$category_arr = [];
$categorys = explode(',',$admin_catalog);
foreach ($categorys as $key=>$value) {
array_push($category_arr,$categorys[$key]);
$this->dsql->SetQuery("SELECT reid FROM `#@__arctype` WHERE id in($categorys[$key]) group by reid ");
$this->dsql->Execute();
if(($reid = $this->dsql->GetObject()->reid) != 0) {
// 不是二级分类
array_push($category_arr,$reid);
// 继续判断是否为二级分类
$this->dsql->SetQuery("SELECT reid FROM `#@__arctype` WHERE id in($reid) group by reid ");
$this->dsql->Execute();
if(($reid = $this->dsql->GetObject()->reid) != 0) {
array_push($category_arr,$reid);
// 继续判断是否为二级分类
$this->dsql->SetQuery("SELECT reid FROM `#@__arctype` WHERE id in($reid) group by reid ");
$this->dsql->Execute();
if(($reid = $this->dsql->GetObject()->reid) != 0) {
array_push($category_arr,$reid);
// 继续判断是否为二级分类
$this->dsql->SetQuery("SELECT reid FROM `#@__arctype` WHERE id in($reid) group by reid ");
$this->dsql->Execute();
if(($reid = $this->dsql->GetObject()->reid) != 0) {
array_push($category_arr,$reid);
// 继续判断是否为二级分类
$this->dsql->SetQuery("SELECT reid FROM `#@__arctype` WHERE id in($reid) group by reid ");
$this->dsql->Execute();
}
}
}
}
}

此处写得有点糟糕,循环,我因为只有四级就先这么简单写

然后在$admin_catalogs = array_unique($admin_catalogs);后添加一行

$admin_catalogs = array_unique($category_arr);

DEDECMS 后台系统用户授权目录更改为无限级(默认为二级授权)的更多相关文章

  1. Linux—用户新建目录和文件的默认权限设置:umask详解

    关注微信公众号:CodingTechWork,一起学习进步. 引言   我们有没有思考过一个问题,在登录Linux系统后,我们创建的目录或者文件的权限,为什么每次创建都是统一的?我们做以下实验:新建一 ...

  2. dedecms后台系统基本参数标题

    1,站点设置 2,核心设置 3,附件设置 4,会员设置 6,性能选项 7,其它选项 8,模块设置 在E:\wamp\www\dededln\back\inc\configgroup.txt

  3. 【微信支付】公众号、商户基础配置和流程(包括设置支付授权目录、测试支付目录和白名单、JS接口安全域名、授权回调域名等)

    一.使用场景以及说明 使用场景:商户已有H5商城网站,用户通过消息或扫描二维码在微信内打开网页时,可以调用微信支付完成下单购买的流程. 说明:1.用户打开图文消息或者扫描二维码,在微信内置浏览器打开网 ...

  4. DEDECMS:将dedecms系统的data目录迁移到web以外目录

    dedecms系统的data目录是系统缓存和配置文件的目录,一般都有可以读写的权限,只要是能够写入的目录都可能存在安全隐患,很多站长甚至给予这个目录可执行的权限,更是非常危险,所以我们建议将这个dat ...

  5. Windows10系统如何更改程序的默认安装目录?

    Windows10系统如何更改程序的默认安装目录? 在Windows10系统的使用中,软件程序的默认安装目录是:C:\Program Files\...或者C:\Program Files(x86)\ ...

  6. SQL Server如何更改系统用户dbo的所属账号

    在SQL Server的每个数据库中都有一个dbo系统用户,dbo是系统默认创建的,无法被删除,如下: dbo在内部其实是绑定了一个SQL Server账号的,可以通过其属性查看Login name, ...

  7. Mac 如何将apache的这个默认目录更改到用户目录下

    如何将apache的这个默认目录更改到用户目录下. 做如下更改即可: 1.在自己的用户目录下新建一个Sites文件夹,我的用户目录为gaocuili 2.进到cd /etc/apache2/users ...

  8. Python实现自动更改系统用户密码,生成随机密码

    算是一个实用的例子,定制系统任务,并将随机密码上传至日志服务器,实现定期修改密码: 部分代码: 1 #!/usr/bin/env python 2 #coding:utf-8 3 import ran ...

  9. 玩转Django2.0---Django笔记建站基础八(admin后台系统)

    第八章 admin后台系统 admin后台系统也成为网站后台管理系统,主要用于对网站前台的信息进行管理,如文字.图片.影音和其他日常使用文件的发布.更新.删除等操作,也包括功能信息的统计和管理,如用户 ...

  10. 如何将Superset嵌入后台系统之实践

    1. 前言 此次实践过程全属个人学习,我选择了在window下安装Superset,并进行嵌入后台系统实践.对此进行实践过程总结,实践成果分享给大家,供大家参考,如果你有更好的想法,欢迎留言交流. 2 ...

随机推荐

  1. Python爬虫如何使用代理IP进行抓取

    前言 Python爬虫是一种非常强大的工具,可以用于抓取各种网站的数据.但是,在一些情况下,我们需要使用代理IP来完成数据抓取,如绕过IP限制或保护隐私信息等.本文将介绍如何使用Python爬虫抓取数 ...

  2. C++算法之旅、09 力扣篇 | 常见面试笔试题(上)算法小白专用

    刷题的目的是为了更好的理解数据结构与算法,更好的理解一些封装起来的库函数是怎么实现的,而不是简简单单的为了刷题而刷题. 时间.空间复杂度 事后统计法 提前写好算法代码和编好测试数据,在计算机上跑,通过 ...

  3. 04-Shell字符串变量

    1. 字符串变量的三种方式 字符串(String)就是一系列字符的组合.字符串是 Shell 编程中最常用的数据类型之一(除了数字和字符串,也没有其他类型了) 单引号方式 双引号方式, 推荐 不用引号 ...

  4. FFMPEG+SDL简单视频播放器——人脸检测

    前言 最近突发奇想,给播放器加上一个人脸检测的功能(事情似乎朝着奇怪的方向发展了,谁家的播放器会需要去检测人脸啊!),主要的目的是为了学习opencv,尝试将ffmpeg和opencv融合在一起使用. ...

  5. CSS3之创建3D场景

    1.属性介绍 perspective:800    平面距离三维中方框的距离 perspective-origin:50% 50%   表示从平面上哪个位置看三维图 ,相当于是X轴和Y轴,此时表示平面 ...

  6. Unity 代码调用重新生成csproj文件

    结论 先放结论:editor代码中直接调用 Unity.CodeEditor.CodeEditor.CurrentEditor.SyncAll(); 原因 在一些操作后,比如修改csc.rsp的内容之 ...

  7. P4022 [CTSC2012]熟悉的文章 题解

    题目链接 简要题意 给定 \(m\) 个模板串和 \(n\) 个匹配串,如果一个字符串是一个模板串的子串且长度不小于 \(L\) 则称其为"熟悉的",对于每个匹配串,求一个最大的 ...

  8. Kubernetes: kube-apiserver 之认证

    kubernetes:kube-apiserver 系列文章: Kubernetes:kube-apiserver 之 scheme(一) Kubernetes:kube-apiserver 之 sc ...

  9. React 中常用技术

    可以少去理解一些不必要的概念,而多去思考为什么会有这样的东西,它解决了什么问题,或者它的运行机制是什么? 1. React 中导出和导入 1.1 ES6 解析 ES6 的模块化的基本规则或特点: 每一 ...

  10. [WPF]动手写一个简单的消息对话框

    消息对话框是UI界面中不可或缺的组成部分,用于给用户一些提示,警告或者询问的窗口.在WPF中,消息对话框是系统原生(user32.dll)的MessageBox,无法通过Style或者Template ...