# 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')