问题不在于菜单数量,而是 left.php 中判断当前活动模块时,$parent_mod 逻辑可能干扰了全局变量或输出。将标签管理放在文章管理的子菜单下正常,说明只要标签管理作为独立的一级菜单,就会触发某种冲突。
既然子菜单方式正常,我们可以采用这个方案。按以下修改:
1. 修改 admin/left.php,将标签管理作为文章管理的子菜单
找到文章管理的子菜单数组,增加一项:
[ 'name' => '文章管理', 'icon' => '📝', 'sub' => [ ['mod' => 'article_list', 'name' => '文章列表'], ['mod' => 'article_add', 'name' => '写文章'], ['mod' => 'tagsadmin', 'name' => '标签管理'], // 新增 ] ],
同时,删除原来独立的 ['mod' => 'tagsadmin', 'name' => '标签管理', 'icon' => '🔖'] 行。
2. 修改 admin/index.php 中的白名单
确保 $allowed_mods 包含 'tagsadmin'(如果还没有)。
3. 确保 admin/modules/tagsadmin.php 正常工作
使用我们最终提供的 tagsadmin.php 代码(只有展示,不含删除/合并),或者使用完整功能版(但必须确保没有输出干扰)。因为作为子菜单,它应该不会影响其他模块的重定向。
4. 测试
侧边栏文章管理下会出现“标签管理”子菜单。
点击后正常显示标签列表。
文章添加/编辑/删除等操作不再出现白屏。
这样既保留了后台标签管理功能,又避开了独立菜单项的冲突。这个现象可能是由于 PHP 版本或框架在解析独立菜单时对 session 或 header 的影响,但作为子菜单就正常。
发表评论 (0)
留下你的足迹