2015-11-30 33 views
0

TYPO3 6.2中的tt_content.sorting對於翻譯記錄(sys_language_uid=1)我有一些搞砸的值。尊重TYPO3前端原始語言的排序(如defLangBinding)

這意味着,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 

修改一些設置,但我不確定是否連接,進行排序的數據庫對某些領域來說確實是錯誤的,通過移動個體是可以糾正的雙頁面在頁面或列表模塊中。 僞造有許多相關的古代錯誤。

我的問題:

  • 是否有修復爲依據的主要語言的整個網站的翻譯CE的排序腳本?

  • 前端是否有類似defLangBinding - 這也會有幫助,因爲錯誤的排序值將變得毫無意義。或者對styles.content.get查詢進行修改?

+0

當原始記錄更改時,本地記錄的排序不會更新。 這是在這裏報告:https://forge.typo3.org/issues/70154 –

回答

1

爲什麼你不嘗試再次把你的內容記錄同步?這可以通過純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到表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已停用,記錄將立即在翻譯版本中提取並考慮其排序。

+0

我已經更新了上面的設置('hideNonTranslated')。正如你所描述的那樣:該網站之前是基於覆蓋的,現在不再了。你的查詢給我802條記錄,我有一個印象,他們都有不同的排序值。問題:如果一篇文章對於兩種語言的排序都具有相同的值,可以嗎?並且:恩,我如何檢查第二語言的獨佔記錄? – Urs

+0

只要排序一致,具有不同排序值的記錄就不算什麼了。我更新了關於另一個問題的答案。 – lorenz

+0

太棒了,非常感謝! – Urs