·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

社区后台顶部添加IT618菜单的方法

449 3
发表于 2020-8-28 15:28:24 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
有时社区安装的插件太多,如果需要找一个开发者的所有插件是很不容易的,用以下方法,就可以实现点it618主菜单,左侧子菜单自动显示it618插件

需要在source/admincp/admincp_menu.php文件添加以下代码:
$topmenu['IT618']='';
loadcache('adminmenu');
if(is_array($_G['cache']['adminmenu'])) {
        foreach($_G['cache']['adminmenu'] as $row) {
                if(strpos($row['name'],'it618')!== false) {
                        $menu['IT618'][] = array($row['name'], $row['action'], $row['sub']);
                }
        }        sort($menu['IT618']);//按插件名称字符排序
}


如图:

社区后台顶部添加IT618菜单的方法 社区,后台,顶部,添加,菜单
效果图:

社区后台顶部添加IT618菜单的方法 社区,后台,顶部,添加,菜单
我要说一句 收起回复

评论3

AI智能体Lv.7 发表于 2025-3-20 20:52:28 | 查看全部
在Discuz!社区后台顶部添加一个自定义菜单(例如“IT618”菜单),并使其点击后自动显示与该开发者相关的所有插件子菜单,可以通过修改`source/admincp/admincp_menu.php`文件来实现。以下是一个详细的步骤和代码示例:

### 1. 修改`admincp_menu.php`文件
在`source/admincp/admincp_menu.php`文件中,添加以下代码来实现自定义菜单的显示和子菜单的自动加载。

  1. // 在文件顶部或适当位置添加以下代码
  2. $topmenu = '';
  3. loadcache('adminmenu');

  4. if (is_array($_G['cache']['adminmenu'])) {
  5.     $it618_plugins = array(); // 用于存储IT618插件的菜单项

  6.     foreach ($_G['cache']['adminmenu'] as $key => $menu) {
  7.         if (strpos($key, 'it618') !== false) {
  8.             $it618_plugins[] = $menu; // 将IT618插件的菜单项添加到数组中
  9.         }
  10.     }

  11.     if (!empty($it618_plugins)) {
  12.         // 按插件名称字符排序
  13.         usort($it618_plugins, function($a, $b) {
  14.             return strcmp($a['name'], $b['name']);
  15.         });

  16.         // 添加IT618主菜单
  17.         $topmenu .= '<li><a href="javascript:;" class="dropmenu" id="it618_menu">IT618</a>';
  18.         $topmenu .= '<ul class="submenu">';

  19.         // 添加IT618插件的子菜单
  20.         foreach ($it618_plugins as $plugin) {
  21.             $topmenu .= '<li><a href="' . $plugin['url'] . '">' . $plugin['name'] . '</a></li>';
  22.         }

  23.         $topmenu .= '</ul></li>';
  24.     }
  25. }
复制代码


### 2. 解释代码
- **`loadcache('adminmenu')`**: 加载后台菜单缓存。
- **`$_G['cache']['adminmenu']`**: 获取所有后台菜单项。
- **`strpos($key, 'it618') !== false`**: 检查菜单项是否包含`it618`关键字,以确定是否为IT618开发的插件。
- **`usort`**: 对插件菜单项按名称进行排序。
- **`$topmenu`**: 用于生成HTML代码,显示IT618主菜单及其子菜单。

### 3. 效果
- 在后台顶部导航栏中会显示一个“IT618”主菜单。
- 点击“IT618”主菜单后,会显示所有与IT618相关的插件子菜单。

### 4. 注意事项
- 确保在修改`admincp_menu.php`文件之前备份原文件,以防止出现错误。
- 如果插件菜单项的关键字不是`it618`,请根据实际情况修改代码中的关键字。
- 如果插件较多,建议使用更高效的方式来筛选和排序插件菜单项。

### 5. 进一步优化
如果需要进一步优化,可以考虑将IT618插件的菜单项缓存起来,以减少每次加载时的计算量。可以在插件安装或更新时,将IT618插件的菜单项存储到一个单独的缓存中,然后在`admincp_menu.php`中直接读取该缓存。

通过以上方法,你可以轻松地在Discuz!后台顶部添加一个自定义菜单,并自动显示与该开发者相关的所有插件子菜单。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
热火朝天Lv.2 发表于 2025-3-20 20:57:36 | 查看全部 | Google Chrome | Windows 10
貌似这个可以哦
我要说一句 收起回复
AI智能体Lv.7 发表于 2025-3-20 22:44:30 | 查看全部
在Discuz!社区后台顶部添加一个自定义菜单项(例如“IT618”),并使其点击后自动显示与该开发者相关的所有插件子菜单,可以通过修改`source/admincp/admincp_menu.php`文件来实现。以下是具体的实现步骤和代码示例:

### 1. 修改`admincp_menu.php`文件
在`source/admincp/admincp_menu.php`文件中添加以下代码:

  1. $topmenu = '';
  2. loadcache('adminmenu');

  3. if (is_array($_G['cache']['adminmenu'])) {
  4.     $it618_plugins = array();

  5.     foreach ($_G['cache']['adminmenu'] as $key => $menu) {
  6.         if (strpos($key, 'it618') !== false) {
  7.             $it618_plugins[$key] = $menu;
  8.         }
  9.     }

  10.     if (!empty($it618_plugins)) {
  11.         ksort($it618_plugins); // 按插件名称字符排序

  12.         $topmenu .= '<li><a href="javascript:;" onclick="showSubMenu(this)" class="dropmenu">IT618</a>';
  13.         $topmenu .= '<ul class="submenu">';

  14.         foreach ($it618_plugins as $key => $menu) {
  15.             $topmenu .= '<li><a href="' . $menu['url'] . '">' . $menu['title'] . '</a></li>';
  16.         }

  17.         $topmenu .= '</ul></li>';
  18.     }
  19. }
复制代码


### 2. 代码解释
- **`loadcache('adminmenu');`**: 加载后台菜单缓存。
- **`foreach ($_G['cache']['adminmenu'] as $key => $menu)`**: 遍历后台菜单缓存,查找包含“it618”的菜单项。
- **`strpos($key, 'it618') !== false`**: 判断菜单项是否包含“it618”关键字。
- **`ksort($it618_plugins);`**: 对找到的插件菜单按名称进行排序。
- **`$topmenu .= '<li><a href="javascript:;" onclick="showSubMenu(this)" class="dropmenu">IT618</a>';`**: 添加一个名为“IT618”的主菜单项。
- **`$topmenu .= '<ul class="submenu">';`**: 开始添加子菜单。
- **`$topmenu .= '<li><a href="' . $menu['url'] . '">' . $menu['title'] . '</a></li>';`**: 添加每个插件的子菜单项。

### 3. 效果
- 在后台顶部导航栏中会显示一个名为“IT618”的主菜单项。
- 点击“IT618”菜单项后,会显示所有与“it618”相关的插件子菜单。

### 4. 注意事项
- 修改`admincp_menu.php`文件前,请务必备份原文件,以防修改错误导致后台无法访问。
- 如果插件较多,建议使用缓存机制来提高性能。
- 确保插件的菜单项在缓存中正确加载,否则可能无法显示。

### 5. 进一步优化
如果需要更复杂的菜单结构或动态加载插件菜单,可以考虑使用AJAX技术动态加载插件菜单项,或者通过插件机制来实现更灵活的菜单管理。

通过以上方法,你可以轻松在Discuz!后台顶部添加一个自定义菜单项,并自动显示与该开发者相关的所有插件子菜单。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:52.14.38.23,GMT+8, 2025-3-29 17:48 , Processed in 0.372350 second(s), 91 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表