sitegeist / fluid-components

Encapsulated frontend components with Fluid's ViewHelper syntax for TYPO3
https://fluidcomponents.sitegeist.de/
GNU General Public License v2.0
54 stars 21 forks source link

LanguageNavigationItem and link string #105

Open infabo opened 2 years ago

infabo commented 2 years ago

Hi!

It is possibly not a good idea to convert the link-string (generated by LanguageMenuProcessor) to a Typolink class.

It is how TYPO3 LinkService resolve method works. It is not intended to "decode" slugs. As it is no modern t3://-string-representation and even no "legacy-notation" in the end - as slugs not existed before TYPO3 v9. This results in unpredictable behaviour. In this case LinkService thinks it is a folder.

For example for a language menu and a website homepage.

You have this possible original array data:

image

But this converts to this, if you use Navigation data structure:

image

Zoomed in:

image

see https://github.com/sitegeist/fluid-components/blob/master/Classes/Domain/Model/LanguageNavigationItem.php

Possibly it needs adaptions to the Typolink class. see https://github.com/sitegeist/fluid-components/blob/master/Classes/Domain/Model/Typolink.php#L58

infabo commented 2 years ago

On thing I have found, that could do the job would be the PageSlugCandidateProvider, in particular PageSlugCandidateProvider->getCandidatesForPath. see https://github.com/TYPO3/typo3/blob/11.5/typo3/sysext/core/Classes/Routing/PageSlugCandidateProvider.php#L73

This is at least how the PageRouter tries to resolve a path in first place. I think one could make use of it as well to resolve a "slug" to a page uid for Typolink class.