Bug #91718
openDatabaseQueryProcessor should find tt_content entries by uid regradless the pid
0%
Description
I created a content element (Footer) which is located on pid 88. I then created a lib to get the content element to all of my pages by addding it on my Layout.
lib.footer = CONTENT
lib.footer.table = tt_content
lib.footer.select.pidInList = 88
lib.footer.select.uidInList=201
When i call it on the page 88 everything works fine. If i call it on another page (55) on the other hand, then the element is found but the information is not there. The variable defined on the DatabaseQueryProcessor comes back empty.
I debuged the query and it seems that TYPO3 request the footer element but on the current pid and not on the pid i defined here:
lib.footer.select.pidInList = 88
The query:
SELECT * FROM `footer` WHERE (`footer`.`pid` IN (55)) AND (2011) AND (`footer`.`sys_language_uid` IN (0, -1)) AND ((`footer`.`deleted` = 0) AND (`footer`.`t3ver_state` <= 0) AND (`footer`.`t3ver_wsid` = 0) AND (`footer`.`t3ver_oid` = 0) AND (`footer`.`starttime` <= 1593183420) AND ((`footer`.`endtime` = 0) OR (`footer`.`endtime` > 1593183420)))
My footer.typoscript
dataProcessing {
330 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
330 {
table = footer
where.field = uid
where.dataWrap = |{field:footer_relation}
as = footerInfo
Now here, if the pid is not defined than it should be ignored and find the tt_content by it's ID regardless the PID, which it doesn't do. It always requires a pid and returns an empty footerInfo if called on another page.
If i however add this on my DatabaseQueryProcessor:
pidInList = 88
Then i get the content element's information on the other pages as well and the query looks like this:
SELECT * FROM `footer` WHERE (`footer`.`pid` IN (88)) AND (2011) AND (`footer`.`sys_language_uid` IN (0, -1)) AND ((`footer`.`deleted` = 0) AND (`footer`.`t3ver_state` <= 0) AND (`footer`.`t3ver_wsid` = 0) AND (`footer`.`t3ver_oid` = 0) AND (`footer`.`starttime` <= 1593183840) AND ((`footer`.`endtime` = 0) OR (`footer`.`endtime` > 1593183840)))
Now i get the content only because i specifically defined the 88 on the DatabaseQueryProcessor
Updated by Aristeidis Karavas over 4 years ago
- Subject changed from lib.something doesn't take the pidInList in consideration to DatabaseQueryProcessor should find tt_content entries by uid regradless the pid
Updated by Jan Kornblum over 4 years ago
I had a similar issue recently, to get elements by their uid independent from pid. My workaround was to set pidInList=1 and recursive=99 to get them regardless of the pid.
Updated by Joerg Kummer almost 4 years ago
- Related to Feature #93450: ContentObjectRenderer: allow TypoScript select object without any constraint of uidInList or pidInList added
Updated by Ayke Halder almost 4 years ago
It should already be possible to select records without pid constraint by setting:
select.pidInList = 0
Updated by S P over 3 years ago
Ayke Halder wrote in #note-4:
It should already be possible to select records without pid constraint by setting:
[...]
Yes, but this should happen implicitly as soon uidInList
is used. That's what this issue is about, as far as I understand it.