用途:本技能针对 baserCMS 4 到 5 的「主题」迁移。主题以 templates/layout、templates/element、templates/Blog、templates/Pages、templates/Mail 等模板为主体,不含 Controller/Table,仅带少量前端显示用 Helper(src/View/Helper/*.php)。它在 BcAddonMigrator 将主题转换为 5 系主题插件之后使用,处理仍需手工改写的模式(TH- 系)和前端显示错误实例(F- 系)。主题转换的整体流程(zip 化、BcAddonMigrator 转换、放入 plugins/、横向 5 系化、应用到 sites 表的 theme)参见 basercms4-to-5-upgrade;5 系主题的正确写法以 basercms5-theme-development 为准,插件内部代码见 basercms5-plugin-4-to-5-upgrade。
主要能力:TH-1 处理 siteConfig 数组访问,改用 \BaserCore\Utility\BcSiteConfig::get('key');TH-2 处理全局函数 fullUrl(),改用 \BaserCore\Utility\BcUtil::fullUrl();TH-3 处理主题 Helper 直接实例化 4 系 Component(如 new BcGmapsComponent(new ComponentCollection()))导致的 Fatal,先在 vendor/baserproject/ 中确认 baser-core 是否已移植同等功能(如 BaserCore\Utility\BcGmaps::getLocation());TH-4 提醒 BcBaserHelper 快捷方法需按「函数定义 grep → methods() 映射 grep」两步确认;TH-6 处理 BcSite::findCurrent() 与 theme/<name>/ 资产 URL 写法,改为插件 webroot 形式 getUrl('/<主题名snake>/img/...')。F 系覆盖 MissingTableClassException、请求属性 currentContent/currentSite、Blog→BcBlog 等 Bc 前缀、Helper 手动实例化、插件 status=0 导致服务缺失、posts_date→posted、$user 等视图变量需自前导出、css()/js() 第二参数变为 $inline、$this->getRequest()->getPath()、邮件表单模板迁移、上传图片需传实体、widget element 目录由 widgets 改为 widget、子目录部署 URL 缺 /v5/、uploadImage 第二参数需 EntityInterface 等。
使用方式:先用报错信息检索对应模式,逐个修复;修改后用 php -l 校验文件,并用 curl -sk -o /dev/null -w "%{http_code}" <URL> 确认状态码。1 处修好后用 grep -rn 横查全主题同类写法。
适用场景:4 系主题代码的检测与转换、主题/插件前端渲染报错的排查与复原。
限制:不含 Controller/Table 相关的 T-/C- 目录模式;部分按阶段依赖尚未导入的插件时应记为「见送り(等待依赖插件导入)」,不计入主题单独完成条件;费用、价格、平台等信息资料未提供。