2.9 KiB
2.9 KiB
Bug 修复方案:集合编辑页面文章无法勾选
问题描述
页面:https://blog.ephron.ren/admin/collections/edit/{key}
现象:点击文章列表中的文章项,checkbox 不会被勾选,已选文章区域也不会更新。
影响范围:
- 集合编辑页面(collection_edit.html)— 无法勾选文章
- 集合新建页面(collection_new.html)— 同样受影响
- 集合管理列表页(admin/collections.html)— 同样受影响
根因分析
直接原因
blog/templates/base.html 缺少 {% block extra_scripts %} 定义。
详细分析
-
collection_edit.html第 261 行声明了:{% block extra_scripts %} <script> (() => { // 文章选择逻辑:togglePost、renderSelected、拖拽排序等 })(); </script> {% endblock %} -
但
base.html的模板结构只有:{% block extra_styles %}{% endblock %} ✅ 存在 {% block content %}{% endblock %} ✅ 存在 {% block extra_scripts %}{% endblock %} ❌ 缺失 -
由于
base.html未定义extra_scriptsblock,Jinja2 直接忽略子模板中该 block 的内容,导致整个文章选择的 JavaScript 代码根本没有被渲染到页面。
对比其他服务
| 服务 | base 模板 | extra_scripts 定义 |
|---|---|---|
| blog | blog/templates/base.html |
❌ 缺失 |
| prompt | prompt/templates/base.html |
✅ 已有 |
| auth | auth/templates/_design_system/page_shell.html |
✅ 已有 |
| canvas | canvas/templates/base.html |
✅ 已有 |
| home | home/templates/_design_system/page_shell.html |
✅ 已有 |
修复方案
修改文件
blog/templates/base.html
修改内容
在 </body> 标签前添加 {% block extra_scripts %}{% endblock %}。
修改前(第 663-664 行):
</script>
</body>
</html>
修改后:
</script>
{% block extra_scripts %}{% endblock %}
</body>
</html>
完整 Diff
--- a/blog/templates/base.html
+++ b/blog/templates/base.html
@@ -661,5 +661,6 @@
});
});
</script>
+ {% block extra_scripts %}{% endblock %}
</body>
</html>
验证方法
- 部署后访问
https://blog.ephron.ren/admin/collections/edit/{key} - 点击文章列表中的任意文章项
- 预期:checkbox 被勾选,文章出现在「已选文章」区域
- 再次点击同一文章
- 预期:checkbox 取消勾选,文章从「已选文章」区域移除
- 点击「保存更新」
- 预期:页面刷新后,之前勾选的文章仍然显示在「已选文章」区域
影响评估
- 风险等级:低(纯新增 block 定义,不影响现有逻辑)
- 影响范围:blog 服务所有使用
extra_scriptsblock 的页面 - 回滚方案:删除添加的一行即可
优先级
高 — 集合编辑功能完全不可用,需要立即修复。