我在TYPO3 CMS中遇到了一种奇怪的行为:我在多个页面上使用了内容元素“Grid-Element”。
“网格元素”CE始终具有不同的子元素,如图像或文本。 今天,所有子元素突然移动到网站的每个页面上的“网格元素”之外。我不得不手动修复它们。基本上什么都没有丢失,但结构被打破了。
我还查看了编辑记录,但没有任何相关内容可供查看。
我想知道这是怎么发生的,以及如何防止这种情况再次发生。有什么想法吗?
答案 0 :(得分:1)
使用gridelements时,您可以为每个内容元素配置一个配置。它存储在数据库中,主要存储在根页面上。
对于容器中的每个字段,您可以设置colPos
个数字。
你的破碎结构可能因为:
colPos
值colPos
值答案 1 :(得分:1)
在99%的情况下,当没有安装gridelements时更新TYPO3核心时会发生这种情况。运行数据库比较会将字段colPos的SQL配置从signed更改为unsigned,从而将-1更改为0.
由于-1是网格容器子元素的指示符,因此该指标会丢失。
您可以通过运行:
来解决此问题UPDATE tt_content SET colPos = -1 WHERE tx_gridelements_container > 0
其他1%的人真的无法重现症状的原因,所以目前我们并不确切知道他们究竟出了什么问题。
答案 2 :(得分:0)
最近有一个错误修复程序,也可能在这里修复了症状。因此,似乎我们找到了另一个答案中提到的1%的原因。
也请查看最新的master,看看它是否也解决了您的问题: https://forge.typo3.org/issues/85511
答案 3 :(得分:0)
更新:2个事件中的1个可以追溯到网格要素中没有的问题(见下文)。
我也有这种效果。
tt_content.colpos
的数据类型:它是未签名的吗?tt_content.colPos
更改为已签名(未签名)UPDATE tt_content SET colPos = -1 WHERE tx_gridelements_container > 0
因此,(可能)发生的情况是colPos更改为无符号,导致所有-1值都更改为0。因此,不再正确解释网格元素的结构。
核心将colPos设置为unsigned,gridelements覆盖它并将其设置为signed。
如果一切正常,则应该不会真正发生这种数据库模式更改。
这些是我的测试用例:
更新:测试用例2可以追溯到具有composer.json混乱的(开发)扩展。这是一个非常模糊的场景,可能很少见,但是它确实对TYPO3 PackageManager中列出的扩展造成了严重破坏,导致未加载gridelements架构。
仅出于完整性考虑:您可以通过使用已停用扩展名的composer.json中另一个已激活扩展名的扩展名来重现该扩展名,例如在ext1 / composer.json中:
"replace": {
"ext2": "self.version",
"typo3-ter/Uniolexample": "self.version"
}