对于翻译记录(tt_content.sorting
),我在TYPO3 6.2中对sys_language_uid=1
有一些混乱的值。
这意味着styles.content.get
在原始语言中显示正确的顺序(在后端可见),但在翻译语言中不显示(在后端的所有内容看起来都很好,因为它跟随defLangBinding
但是在前端,使用sorting
字段中的错误值,因此排序搞砸了。
我们在过去几周内修改了一些设置
// before
// config.sys_language_mode = content_fallback:1,0
// config.sys_language_overlay = hideNonTranslated
// currently
config.sys_language_mode = strict
config.sys_language_overlay =0
但我不确定这是否已连接。对于某些字段,DB中的排序确实是错误的。可以通过在页面或列表模块中移动单个CE来进行更正。 伪造有许多相关的古老错误。
我的问题:
是否有一个脚本可以根据主要语言修复整个网站的已翻译CE的排序?
前端是否有类似defLangBinding
的东西 - 这也有帮助,因为错误的排序值会变得毫无意义。或styles.content.get
查询的修改?
答案 0 :(得分:2)
为什么不尝试再次同步您的内容记录?这可以通过纯SQL 来完成,如果在第二语言中没有或只有少数独占记录。如果没有,你就会把它弄得更糟。
此查询将为您提供一个包含默认语言和翻译记录的表格,包括排序值:
select a.header, a.uid, a.sorting, b.sorting, b.uid, b.header from tt_content as a inner join tt_content as b on a.uid=b.l18n_parent where b.l18n_parent > 0 and a.sys_language_uid = 0 and not a.deleted and not b.deleted;
然后,您可以将此查询调整为更新查询,该查询将表b的排序值设置为表a中的值。
要检查您是否有没有默认语言的父级的记录,您可以使用此查询:
select * from tt_content where sys_language_uid > 0 AND l18n_parent = 0 AND NOT deleted
关于您的配置,请查看manual for sys_language_overlay:
如果设置,则由CONTENT cObject选择的某些表中的记录 使用“languageField”设置将选择默认语言(0) 而不是sys_language_uid / sys_language_mode设置的任何语言。 此外,系统将查找所选的翻译 记录和叠加配置的字段。
所以这似乎与您的问题有关:之前,TYPO3(可能 - 您没有发布sys_language_overlay
的设置)配置为首先以默认语言提取记录,尝试覆盖它们翻译然后输出。
现在sys_language_overlay
已停用,记录将立即以翻译版本提取,并考虑排序。