尊重TYPO3前端的原始语言排序(如defLangBinding)

时间:2015-11-30 11:07:59

标签: typo3 typoscript typo3-6.2.x

对于翻译记录(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查询的修改?

1 个答案:

答案 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已停用,记录将立即以翻译版本提取,并考虑排序。