Bug #87093
closedTYPO3 9.5: CONTENT TypoScript object type does not select records with language set to -1
100%
Description
If you create tt_contents with language set to "All" aka 1 then those records are only shown in foreign languages. In the default language (sys_language_uid = 0) they are not shown.>getQueryConstraints the LanguageAspect's doOverlays() method is queried, and this only return true if sys_language_uid is greater 0.
It seems that in ContentObjectRenderer->getQueryConstraints
the constraint "AND (tt_content.sys_language_uid in (0,-1))
" is only added, if the same page is opened in other languages. In the default language it's always "AND (tt_content.sys_language_uid = 0)
". In TYPO3 8.5 the expected constraint is also added in the default language.
The problem is, that in ContentObjectRenderer
For me the solution is to change the else part on line 6936 (TYPO3 9.5.1) in ContentObjectRenderer.php from
$languageQuery = $expressionBuilder->eq($languageField, $languageAspect->getContentId());
to
$languageQuery = $expressionBuilder->in($languageField, [$languageAspect->getContentId(), -1]);
but I don't know if there are any unexpected side effects.
Side note: I also made some other tests and for me extbase records and even the RECORD TypoScript object works as expected. I think only CONTENT TypoScript object and code parts which depends on ContentObjectRenderer->getQueryConstraints
are affected.