TYPO3 10.4安装pizpalue扩展后tt_content表无法查询新增内容问题求助
问题原因
你遇到的现象是pizpalue扩展加载优先级、嵌套容器组件存储逻辑共同导致的,核心原因如下:
- 扩展加载顺序错误:你的sitepackage扩展加载顺序早于pizpalue,导致你注册的自定义CType被pizpalue的配置覆盖,新增内容被识别为pizpalue默认的CType(text、panel等)写入数据库
- 嵌套容器的存储逻辑:pizpalue的2-4列容器默认使用TYPO3嵌套内容特性,子内容的
pid字段会存储为父容器的uid,而非当前页面的uid,你之前按页面pid查询tt_content时会过滤掉这部分记录 - 少数情况是你开启了TYPO3工作空间功能,未发布的内容会以影子记录的形式存储在tt_content表中,
pid为-1,常规查询容易忽略这部分数据
解决方案
1. 首先确认内容存储位置
在phpMyAdmin中执行如下SQL查询,不要加任何pid过滤条件,就能看到最新插入的内容记录:
SELECT * FROM tt_content WHERE deleted = 0 ORDER BY uid DESC LIMIT 20;
如果执行上述查询后看到uid大于25的记录,就说明是之前的查询条件有问题,内容实际已经正常写入tt_content表,你之前查询不到内容,大概率是默认按页面pid过滤了结果。
2. 修复扩展加载顺序
修改你的sitepackage扩展的ext_emconf.php文件,在constraints['depends']中添加pizpalue的依赖声明,确保你的扩展晚于pizpalue加载,自定义CType不会被覆盖:
$EM_CONF[$_EXTKEY] = [ // 其他配置保持不变 'constraints' => [ 'depends' => [ 'typo3' => '10.4.0-10.4.99', 'pizpalue' => '填入你当前使用的pizpalue版本号,例如11.0.0', // 其他原有依赖保持不变 ], ], ];
修改后进入TYPO3后台的扩展管理,卸载再重新安装你的sitepackage扩展,加载顺序就会生效。
3. 调整容器内容存储规则(可选)
如果你需要容器内的子内容也按页面pid存储,可以进入TYPO3后台的【扩展配置】,找到pizpalue的设置项,关闭「容器子内容继承父容器PID」的开关,之后新建的容器子内容就会存储为当前页面的pid,按页面pid查询时可以正常展示。
4. 工作空间适配(如果开启了工作空间)
如果使用了TYPO3工作空间功能,新增内容需要发布后才会生成正式的tt_content记录,未发布的内容可以通过t3ver_oid字段关联到正式记录ID。
内容的提问来源于stack exchange,提问作者Miz15
相关产品推荐
相关产品推荐

