diff --git a/council-output/EDITOR_RESEARCH.md b/council-output/EDITOR_RESEARCH.md new file mode 100644 index 0000000..f5d949d --- /dev/null +++ b/council-output/EDITOR_RESEARCH.md @@ -0,0 +1,197 @@ +# vr-shopxo-plugin 编辑器方案调研报告 + +> 版本:v1.0 | 日期:2026-04-15 | Agent:BackendArchitect (Q2) + FrontendDev (Q1) + +## Q2:商品发布页替换方案(邪门方案)可行性 — BackendArchitect + +### 核心代码路径 + +| 文件 | 作用 | +|------|------| +| `shopxo/app/admin/controller/Goods.php:82-177` | SaveInfo() 方法 | +| `shopxo/app/admin/controller/Goods.php:187-192` | Save() 方法 | +| `shopxo/app/service/GoodsService.php:1549-1565` | plugins_service_goods_save_handle 钩子 | +| `shopxo/app/admin/view/default/goods/saveinfo.html:505-510` | 钩子渲染位置 | + +--- + +### Q2-A: 钩子调用位置分析 + +**`plugins_view_admin_goods_save` 在 SaveInfo() 中的位置**(Goods.php:159-167): + +```php +$hook_name = 'plugins_view_admin_goods_save'; +$assign[$hook_name.'_data'] = MyEventTrigger($hook_name, [ + 'hook_name' => $hook_name, + 'is_backend' => true, + 'goods_id' => isset($params['id']) ? $params['id'] : 0, + 'data' => &$data, + 'params' => &$params, +]); +// 紧接着: +MyViewAssign($assign); +return MyView(); // 渲染 saveinfo.html +``` + +**结论:钩子在模板渲染之前被调用,结果存入 `$assign['plugins_view_admin_goods_save_data']` 供模板使用。** + +--- + +### Q2-B: 能否完全替换页面内容? + +**关键发现:NO — 钩子仅是注入点,不是替换点。** + +查看 `saveinfo.html` 模板结构(简化): +``` +ModuleInclude('public/header') +