Bug #84692

Linkhandler configuration in condition results in no links in frontend

Added by Marc Bastian Heinrichs almost 3 years ago. Updated 10 months ago.

Status:
Closed
Priority:
Should have
Assignee:
-
Category:
Link Handling, Site Handling & Routing
Target version:
-
Start date:
2018-04-11
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
8
PHP Version:
7.0
Tags:
Complexity:
Is Regression:
Sprint Focus:

Description

Scenario:
  • Multi tree instance with different TSconfigs per tree, also for the linkhandler
Expected:
  • link to the record is generated
Problem:
  • no (!) link is generated

Reason:
DatabaseRecordLinkBuilder::build misses $pageTsConfig['TCEMAIN.']['linkHandler.']['identifier']

The former linkhandler extensions uses as link identifier the format "identifier:table_name:uid".
So the TSconfig was not needed in frontend to know the table name.

This was changed in the core implementation to "t3://record?identifier=identifier&uid=uid".
Thus the page TSconfig needs to be fetched and parsed in frontend.
This done by using TypoScriptFrontendController::getPagesTSconfig() which sadly uses TypoScriptParser::parse without proving an ConditionMatcher.

So the additional TSconfig inside a PIDinRootline condition is totally missing.

Fixes:

Solution A:
double the table configuration from TCEMAIN.linkHandler.fooBar.configuration.table to config.recordLinks.fooBar.table
=> additional pro: no TSconfig parsing in FE

Solution B:
call getPagesTSconfig with new optional argument $matchConditions = true, which results in calling parse providing a ConditionMatcher instance.


Files


Related issues

Related to TYPO3 Core - Feature #89718: Unified PageTS resolving and parsingClosedBenni Mack2019-11-21

Actions

Also available in: Atom PDF