用途:为 TYPO3 v14 站点上的 georgringer/news(EXT:news)新闻批量设计、生成并分配主题标签,规模可从数百条到数万条;可选安装 b13/tag 的通用标签系统(sys_tag)。不涉及 Fluid 前端渲染、标签翻译或标签合并。
主要能力:区分 EXT:news 的分类(sys_category,层级、可选路由)与标签(tx_news_domain_model_tag,扁平、可通过 NewsTag aspect 生成 /{tag-slug}/ 路由);从语料词频推导标签候选而非凭空猜测;每个标签只表达一个概念,配名称、slug 与关键词表;用 Symfony Console 命令经 DataHandler upsert 标签、从 tx_news_related_news 关联的 tt_content 采集正文、按不同关键词命中数打分、选每条新闻前 N 个标签、批量写入 MM 表并更新 tags 计数;支持 --dry-run、--reset、--limit、--storage-pid、--force、--debug-uid。
使用方式:先用 ddev mysql 核对新闻、标签与 MM 表数量,确认正文是否在 tt_content;读取标题与 teaser 后做词频分析;在 config/sites/<id>/config.yaml 配置 NewsTag 路由;在 Classes/Command/AssignNewsTagsCommand.php 编写命令并在 Configuration/Services.yaml 注册;先 --dry-run 迭代关键词,再 --reset --force 正式执行并 cache:flush;最后用 SQL 校验标签数、MM 行数、分布、计数一致性与每标签热度,并在后端 Relations 标签页与前端标签 URL 抽查。
限制:仅适用于 TYPO3 v14.x 与 georgringer/news ^14,不适用于 v12/v13;关键词匹配需用 Unicode 安全的 \p{L}\p{N} 边界(PHP \b 对 ä/ö/ü/ß 失效);大整数 UID 上 createNamedParameter(PARAM_INT) 可能静默丢行,需改用原始 SQL 占位符;TYPO3 14.3.6 起严格语言下未翻译新闻的详情页返回 404,且翻译新闻会丢失未翻译的分类、标签与相关新闻,需自行决定翻译、监听器或 fallbackType: fallback。前端渲染、标签翻译与合并暂未提供。