“飞行前检查”
XOOPS 2.7.0 将其模板引擎从 Smarty 3 升级到 Smarty 4。Smarty 4 的模板语法比 Smarty 3 更严格,并且某些自定义主题和模区块模板可能需要调整才能在 XOOPS 上正常工作2.7.0。
为了帮助您在运行主升级程序之前识别和修复这些问题,XOOPS 2.7.0 在upgrade/ 目录中附带了预检扫描仪。您必须至少运行一次预检扫描仪,然后主升级工作流程才会让您继续。
扫描仪的作用
Section titled “扫描仪的作用”预检扫描仪会遍历您现有的主题和模区块模板,查找已知的 Smarty 4 不兼容性。它可以:
- 扫描您的
themes/和modules/目录,查找可能需要更改的.tpl和.html模板文件 - 报告问题按文件和问题类型分组
- 根据您的要求自动修复许多常见问题
并非所有问题都可以自动修复。某些模板需要手动编辑,特别是如果它们使用旧的 Smarty 3 习语,而在 Smarty 4 中没有直接等效项。
-
将分发版
upgrade/目录复制到您的站点 Web 根目录中(如果您尚未在 Preparations for Upgrade 步骤中执行此操作)。 -
将浏览器指向预检URL:
http://example.com/upgrade/preflight.php
3. 出现提示时使用管理员帐户登录。4. 扫描仪呈现一个包含三个控件的表单: * **模板目录** — 留空以扫描 `themes/` 和 `modules/`。输入类似 `/themes/mytheme/` 的路径可将扫描范围缩小到单个目录。 * **模板扩展名** — 留空以扫描 `.tpl` 和 `.html` 文件。输入单个扩展名以缩小扫描范围。 * **尝试自动修复** — 如果您希望扫描仪修复它知道如何修复的问题,请选中此框。不选中它以进行读取-only扫描。5. 按**运行**按钮。扫描器会遍历选定的目录并报告它发现的每个问题。
## 解释结果
扫描报告列出了它检查的每个文件以及它发现的每个问题。每个问题条目都会告诉您:
* 哪个文件包含问题* 它违反了第 Smarty 4 条规则* 扫描仪是否可以自动修复
如果您在启用_尝试自动修复_的情况下运行扫描,报告还将确认哪些文件被重写。
## 手动修复问题
对于扫描仪无法自动修复的问题,请在编辑器中打开标记的模板文件并进行所需的更改。常见的 Smarty 4 不兼容性包括:
* `{php} ... {/php}` 区块(Smarty 4 不再支持)* 不推荐使用的修饰符和函数调用* 空格-sensitive分隔符的使用* 注册-time插件假设在Smarty 4中更改
如果您不习惯编辑模板,最安全的方法是切换到附带的主题(`xbootstrap5`、`default`、`xswatch5`等),并在升级完成后单独处理自定义主题。
## Re-running 直至清洁
进行修复后(无论是自动还是手动)重新-run预检扫描仪。重复此操作,直到扫描报告没有剩余问题。
扫描干净后,您可以通过按扫描仪 UI 中的 **退出扫描仪** 按钮来结束预检会话。这标志着预检已完成,并允许 `/upgrade/` 处的主升级程序继续进行。
## 继续升级
预检完成后,您可以在以下位置启动主升级程序:
```texthttp://example.com/upgrade/有关后续步骤,请参阅Running Upgrade。
如果您跳过预检
Section titled “如果您跳过预检”强烈建议不要跳过预检,但如果您在未运行预检的情况下进行升级,并且现在看到模板错误,请参阅 Troubleshooting 的 Smarty 4 模板错误部分。您可以在事后运行预检并清除 XOOPS_data/caches/smarty_compile/ 以恢复。