Typo3 内容元素突然移出gridelements容器
我在TYPO3 CMS中遇到了一个奇怪的行为:我在多个页面上使用内容元素网格元素 网格元素CE始终具有不同的子元素,如图像或文本。 今天,所有子元素突然移动到网站每个页面的网格元素之外。我不得不手动一个接一个地修复它们。基本上什么也没有损失,但结构被破坏了 我还检查了编辑历史记录,但没有相关内容可看Typo3 内容元素突然移出gridelements容器,typo3,typoscript,fluid,tx-gridelements,Typo3,Typoscript,Fluid,Tx Gridelements,我在TYPO3 CMS中遇到了一个奇怪的行为:我在多个页面上使用内容元素网格元素 网格元素CE始终具有不同的子元素,如图像或文本。 今天,所有子元素突然移动到网站每个页面的网格元素之外。我不得不手动一个接一个地修复它们。基本上什么也没有损失,但结构被破坏了 我还检查了编辑历史记录,但没有相关内容可看 我想知道这是怎么发生的,以及如何防止这种情况再次发生。有什么想法吗?使用gridelements时,每个内容元素都有一个配置。这存储在数据库中,大部分存储在根页面上 为容器中的每个字段设置colPo
我想知道这是怎么发生的,以及如何防止这种情况再次发生。有什么想法吗?使用gridelements时,每个内容元素都有一个配置。这存储在数据库中,大部分存储在根页面上 为容器中的每个字段设置colPos编号。 您的结构断裂可能是因为: 数据库中重写colPos值的任何更改 元素配置中使用另一个colPos值的更改
使用gridelements时,每个内容元素都有一个配置。这存储在数据库中,大部分存储在根页面上 为容器中的每个字段设置colPos编号。 您的结构断裂可能是因为: 数据库中重写colPos值的任何更改 元素配置中使用另一个colPos值的更改
在99%的情况下,当更新TYPO3核心而没有安装gridelements时,会发生这种情况。运行数据库比较会将字段colPos的SQL配置从有符号更改为无符号,从而将-1更改为0 由于-1是网格容器子元素的指示符,因此该指示符将丢失 您可以通过运行以下命令来修复此问题:
UPDATE tt_content SET colPos = -1 WHERE tx_gridelements_container > 0
另外1%的用户无法重现Symptom的原因,因此目前我们不知道他们到底出了什么问题。在99%的情况下,当更新TYPO3内核时,没有安装gridelements,就会发生这种情况。运行数据库比较会将字段colPos的SQL配置从有符号更改为无符号,从而将-1更改为0 由于-1是网格容器子元素的指示符,因此该指示符将丢失 您可以通过运行以下命令来修复此问题:
UPDATE tt_content SET colPos = -1 WHERE tx_gridelements_container > 0
另外1%的人不能真正重现系统错误的原因,因此目前我们不知道他们到底出了什么问题。最近有一个bug修复程序,可能也会修复这里的症状。因此,我们似乎找到了我在另一个答案中提到的1%的原因 请查看最新的master,看看它是否也解决了您的问题:
最近有一个bug修复程序,可能也会修复这里的症状。因此,我们似乎找到了我在另一个答案中提到的1%的原因 请查看最新的master,看看它是否也解决了您的问题: 更新:2起事件中的1起可追溯至gridelements以外的问题,见下文 我也有这种效果 修复/解决方法 检查数据库中tt_content.colpos的数据类型:是否未签名? 将gridelements更新到最新版本。问题可能已经解决了。 进行数据库比较,让TYPO3将tt_content.colPos更改回已签名而非未签名 按照Jo Hasenau的建议应用解决方案:更新tt_内容集colPos=-1,其中tx_gridelements_container>0 解释 所以,可能发生的情况是colPos被更改为unsigned,导致所有-1值都更改为0。因此,gridelements的结构不再被正确解释 core将colPos设置为unsigned,gridelements将覆盖它并将其设置为signed 如果一切正常,DB模式中的这种变化不应该真正发生 测试用例 以下是我的测试用例: 从8升级到9时,我在更新之前停用了所有第三方扩展。在升级过程中,架构已更改为unsigned。 在8.7.24系统上安装扩展后,colPos也被更改为unsigned。这不应该发生。min是无害的,根本不会改变DB结构。 更新:测试用例2可以追溯到一个带有混乱的composer.json的开发扩展。这是一个相当模糊的场景,可能非常罕见,但它确实破坏了TYPO3 PackageManager中列出的扩展,导致gridelements模式无法加载 出于完整性考虑:您可以在停用扩展的composer.json中使用另一个激活扩展的扩展键来复制它,例如在ext1/composer.json中:
"replace": {
"ext2": "self.version",
"typo3-ter/Uniolexample": "self.version"
}
更新:2起事件中的1起可追溯到gridelements中没有的问题,见下文
我也有这种效果
修复/解决方法
检查数据库中tt_content.colpos的数据类型:是否未签名?
将gridelements更新到最新版本。问题可能已经解决了。
进行数据库比较,让TYPO3将tt_content.colPos更改回signed not
未签名
按照Jo Hasenau的建议应用解决方案:更新tt_内容集colPos=-1,其中tx_gridelements_container>0
解释
所以,可能发生的情况是colPos被更改为unsigned,导致所有-1值都更改为0。因此,gridelements的结构不再被正确解释
core将colPos设置为unsigned,gridelements将覆盖它并将其设置为signed
如果一切正常,DB模式中的这种变化不应该真正发生
测试用例
以下是我的测试用例:
从8升级到9时,我在更新之前停用了所有第三方扩展。在升级过程中,架构已更改为unsigned。
在8.7.24系统上安装扩展后,colPos也被更改为unsigned。这不应该发生。min是无害的,根本不会改变DB结构。
更新:测试用例2可以追溯到一个带有混乱的composer.json的开发扩展。这是一个相当模糊的场景,可能非常罕见,但它确实破坏了TYPO3 PackageManager中列出的扩展,导致gridelements模式无法加载
出于完整性考虑:您可以在停用扩展的composer.json中使用另一个激活扩展的扩展键来复制它,例如在ext1/composer.json中:
"replace": {
"ext2": "self.version",
"typo3-ter/Uniolexample": "self.version"
}
你是说扩展gridelements吗?这不能自行发生,必须在系统中进行一些更改,安装扩展、删除扩展、cronjob都会影响这种更改。你有更多的信息吗?TYPO3中没有名为Grid element的元素。要么你是指德语Datensatz einfügen中的元素插入记录,要么你有这种CEs的扩展。@Thomas我很久没有部署任何东西了,据我所知,除了标准的Typo3 cron之外,没有任何cronjobs。所以这很可能是因为有人在后台做了什么。我们确实使用了Mask扩展,它有很多不同的内容,你可以发布内容元素的结构吗?打字稿、流体模板?你是指扩展gridelements吗?这不能单独发生,系统中必须有一些更改,安装扩展、删除扩展、cronjob会影响这种更改。你有更多的信息吗?TYPO3中没有名为Grid element的元素。要么你是指德语Datensatz einfügen中的元素插入记录,要么你有这种CEs的扩展。@Thomas我很久没有部署任何东西了,据我所知,除了标准的Typo3 cron之外,没有任何cronjobs。所以这很可能是因为有人在后台做了什么。我们确实使用了Mask扩展,它有很多不同的内容,你可以发布内容元素的结构吗?打字稿,流体模板?