You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TYPO3 v10:如何查询无内容元素的页面及多语言翻译

TYPO3 v10 批量查询无内容元素的页面及多语言版本

核心思路

由于启用了allowInconsistentLanguageHandling,翻译页面可独立存在,且内容元素的pid始终关联默认语言页面的UID,因此需要分两种场景匹配无内容的页面:

  • 默认语言页面:直接匹配无对应pid等于自身UID的内容元素
  • 翻译页面:匹配无对应pid为其父页面UID且语言与自身一致的内容元素

通过左连接pages和tt_content表,筛选出没有关联内容的页面记录。

SQL查询示例

SELECT 
    p.uid AS page_uid,
    p.title AS page_title,
    p.sys_language_uid AS language_id,
    p.l10n_parent AS default_page_uid,
    COALESCE(p_parent.title, '默认语言页面') AS default_page_title
FROM 
    pages p
LEFT JOIN 
    pages p_parent ON p.l10n_parent = p_parent.uid
LEFT JOIN 
    tt_content c ON 
        -- 匹配默认语言页面的内容元素
        (p.sys_language_uid = 0 AND c.pid = p.uid)
        OR 
        -- 匹配翻译页面对应的内容元素(关联默认页PID,语言一致)
        (p.sys_language_uid > 0 AND c.pid = p.l10n_parent AND c.sys_language_uid = p.sys_language_uid)
WHERE 
    p.deleted = 0 -- 排除已标记删除的页面
    AND c.uid IS NULL -- 无关联内容元素
ORDER BY 
    p.sys_language_uid, p.l10n_parent, p.title;

优化与注意事项

  • 缩小范围:如果系统语言过多,可添加AND p.sys_language_uid IN (0,3,5)指定语言ID分批查询
  • 过滤系统页面:添加AND p.doktype NOT IN (254,255)排除文件夹、回收站等系统类型页面(doktype值可根据TYPO3配置调整)
  • 数据安全:执行删除操作前务必备份数据库,建议先导出页面UID列表,通过TYPO3后台批量操作或专用扩展处理,避免直接用SQL删除破坏关联
  • 统计预览:先用SELECT COUNT(*)替换查询字段,统计无内容页面数量,再进行后续操作

内容的提问来源于stack exchange,提问作者Joey Bouten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 17:11:14