不会。$cfg['NavigationTreeEnableGrouping']仅控制数据库是否分组显示,不影响默认展开状态;初始展开由前端JS(如navigation.js)和用户偏好(如pma__navigationhiding表、localStorage)共同决定。
修改 $cfg['NavigationTreeEnableGrouping'] 会影响默认展开状态吗?
不会。这个配置控制的是“是否按数据库分组显示”,和展开/折叠行为无关。设为 false 只会让所有数据库平铺,但每个数据库节点仍默认收起。真正起作用的是树状结构的初始化逻辑,它由前端 javascript 控制,后端只提供初始展开层级参数。
关键配置项:$cfg['NavigationTreeDefaultTabTable'] 和 $cfg['NavigationTreeDefaultTabDatabase']
这两个配置本身不控制展开,但它们的存在暗示 phpMyAdmin 的导航树依赖一个叫 navigation_tree.lib.php 的渲染逻辑,而该逻辑读取用户偏好(pmadb 中的 pma__navigationhiding 表)或会话设置来决定初始状态。直接生效的修改点在 JS 层:
- 找到
js/navigation.js(通常位于 phpMyAdmin 根目录下的js/子目录) - 搜索
expandNode或expandAll - 在
$(document).ready()后添加强制展开逻辑,例如:
$(document).ready(function () {
// 立即展开所有一级数据库节点
$('.database > .block > .block_title').each(function () {
$(this).click();
});
});
⚠️ 注意:此写法依赖当前 DOM 结构,phpMyAdmin 5.x 与 4.x 的 class 名略有差异,需先用浏览器开发者工具确认实际 class。
更稳妥的做法:覆盖 config.inc.php 中的 $cfg['NavigationTreeDisplayDbFilterMinimum']
这个配置虽名为“过滤最小值”,但它间接影响初始化时是否预加载子节点。设为 0 可让树在加载时尽可能带出表结构信息,配合以下 JS 补丁效果更稳:
-
在
config.inc.php末尾添加:立即学习“PHP免费学习笔记(深入)”;
$cfg['NavigationTreeDisplayDbFilterMinimum'] = 0;
-
再在
js/navigation.js末尾追加(确保在 DOM ready 之后执行):setTimeout(function () { // 展开所有已渲染的数据库节点(比直接 click() 更兼容) $('.database').find('> .block > .block_content').show(); $('.database').find('> .block > .block_title .fa-caret-right').removeClass('fa-rotate-90'); }, 300);
多个要点、条件或步骤请使用无序列表呈现
- 修改 JS 文件前务必备份原文件,升级 phpMyAdmin 时这些改动会被覆盖
- 不要修改
themes/下的 JS,应改根目录js/navigation.js或通过自定义脚本注入(如在config.inc.php中用$cfg['HeaderExtraScripts']) - 若启用了
$cfg['ServerDefault']且只有一个服务器,可额外触发一次$('#server_select').change()来激活导航树初始化逻辑
最易被忽略的地方是:phpMyAdmin 的导航树展开状态部分缓存在 localStorage 里(键名为 pma_navigation_tree),即使你改了 JS,用户本地已有折叠记录,首次刷新可能仍收起。需要手动清空或在代码中加 localStorage.removeItem('pma_navigation_tree')。



















