query('SELECT * FROM groups ORDER BY sort_order, id')->fetchAll(); $engines = $pdo->query('SELECT * FROM engines ORDER BY sort_order, id')->fetchAll(); $SUGGEST_TYPES = ['bing_osjson', 'baidu_sugrec', 'google_firefox', 'sogou_ajaj', 'so360', 'ddg']; function flash_html(?array $f): string { if (!$f) return ''; $cls = ($f['t'] ?? 'ok') === 'err' ? 'alert err' : 'alert ok'; return '
' . e($f['m']) . '
'; } /** 眼睛(显示)/ 斜杠眼(隐藏)图标 —— 用内联 SVG,避免 emoji 字体差异导致显示成方块 */ function eye_svg(bool $on): string { $slash = $on ? '' : ''; return ''; } /** * 显隐切换按钮:表单自带 ajax=1,前端原地切换、不跳页; * 即使浏览器禁用 JS,表单也会正常提交并回到当前列表页(p 已带上)。 */ function toggle_form(string $action, int $id, int $state, string $p = ''): string { $on = $state === 1; return '
' . csrf_field() . '' . '' . '' . '' . '
'; } function move_form(string $action, int $id, string $dir, string $label, string $p): string { return '
' . csrf_field() . '' . '' . '' . '' . '
'; } ob_start(); if ($p === 'sites'): $rows = $pdo->query('SELECT s.*, g.name AS gname FROM sites s JOIN groups g ON g.id=s.group_id ORDER BY g.sort_order, g.id, s.sort_order, s.id')->fetchAll(); $customCount = 0; foreach ($rows as $rr) { if ((int)($rr['icon_custom'] ?? 0) === 1) { $customCount++; } } ?>

新增 / 编辑网站

无
图标

优先级:上传文件 > 自定义地址 > 「自动获取」抓到的图。
选择上传或填写地址后会自动取消勾选「允许自动更新图标」,该网站图标此后不再被「全部更新」覆盖; 勾回去即可恢复自动。

网站列表()

其中 个使用自定义图标(不会自动更新)
图标简称(展示)名称网址板块显示排序操作
自定义

新增 / 编辑板块

query('SELECT COUNT(*) FROM sites WHERE group_id=' . (int)$g['id'])->fetchColumn(); ?>
名称展示方式网站数显示排序操作

新增 / 编辑搜索引擎

这两项只在「设置 → 联想词来源」选各搜索引擎自己的接口时才会用到; 默认是统一用百度出建议(搜索本身仍走各自的搜索地址)。 这里填的接口只要通了就会被优先使用,没通就自动回退到百度。

搜索引擎列表

点最右侧「眼睛」图标即在该行原地切换,不会跳页
名称搜索地址联想类型前台显示排序操作
■ ()

提示:联想接口需填写对应平台的地址,解析类型可选 bing_osjson / baidu_sugrec / google_firefox / sogou_ajaj / so360 / ddg。「前台显示」为该引擎是否出现在首页顶部搜索框上方的切换条里。

站点设置

副标题显示在首页站点名称下方(也会出现在浏览器标题里)。留空即隐藏,不会退回默认文案。

搜索时仍然用你选中的那个引擎,这里只决定下拉建议词从哪儿来。 实测(2026-09-28):百度 0.12s、360 0.20s、必应 0.5~1.6s 可用; 搜狗接口已失效(返回 0 字节)、谷歌与 DuckDuckGo 国内连不上。 所以默认「统一用百度」——这样切到任何引擎下拉都有词。选「各搜索引擎自己的接口」则恢复成 各用各的(没恢复好的引擎会自动回退到百度的建议)。

决定用哪组键在联想下拉里选词:选中某条后回车才按该词搜索;不选就直接回车 = 用你输入的原文。
推荐「两者都可以」——手不用离开主键区,习惯中文输入法的话按 , . 更顺手,同时也保留方向键。 ⚠️ 只要联想下拉打开着,逗号与句号就会当作选词键、不再直接输入 —— 想搜「python, pandas」这类带逗号的词,先按 Esc 关掉下拉再输。
若只留一组键,另一组会完全没反应(不是坏了,是这里的选择),所以除非你明确只想用一组,建议保持默认。

只影响底部「合集」那一区,中间那些普通网格板块(常用 / 工具…)不受影响。 每个合集里条目不多时选「全部平铺」,一眼看全、不用点; 合集很多、条目很杂时选「标签页折叠」,默认只展开当前那一个。 某个板块是进「合集」还是做成普通网格板块,由「板块 → 展示方式」决定。

同时管两处:顶部搜索(提交后到哪儿看结果)和所有网站格 / 合集链接。 「新标签页打开」(默认):点完当前导航页还在,方便连着开好几个; 「当前页面打开」:在同一个标签里跳走,适合把本站当浏览器起始页、不想堆一堆标签的场景。 不影响后台管理界面里的链接。

勾上后,当站点自身没有提供高清图标时,会依次尝试 icon.horse、Yandex 图标服务;关掉则只用站点自己声明的图标。

站点图标

当前:

上传后,浏览器标签页图标(favicon)与首页顶部的品牌图标会一起换成它, 「添加到手机主屏」的图标也一并更新。
建议用正方形图片(至少 32×32,推荐 512×512 以上);非正方形会居中裁剪成正方形。 支持 PNG / JPG / GIF / WebP,单张限 5MB。

想换回内置图标:

⚠️ 这与「网站列表里每个网站自己的图标」是两回事:这里是本站自己的图标(一个), 那里是导航格子里每个目标网站的图标(很多个)。改这里不会动到任何一个网站格子。

修改管理员密码