[TYPO3-core] RFC: #9046: Nested domain linking with domain record on root page

Tobias Liebig mail_typo3 at etobi.de
Tue Sep 15 18:21:04 CEST 2009


Ingmar and i had a review session during the T3CON. We discussed the 
solution, tested serveral situations.
The attached patch fixes some issues regarding the forced domain mainly.

i'm sure about Ingmar's +1, but we still need another +1.

Further we need to fix the cache issues (see below, add domain to the 
cache identifier).

So if you can help out and need any help from my side (further 
explanation or test-setup), do not hesitate to contact me.


regards
    tobias



Tobias Liebig schrieb:
> Hej,
> 
> sorry for being that late on this issue!
> 
> After some discussions we (at least Ingmar, Christopher, Dmitry and some 
> more people during the T3DD) decided for the following solution:
> 
> * if the current page is part of the target pages rootline, the target 
> page is reachable within the current domain and thus we do not need to 
> prepend the domain to the link
> * if not, step downwards the rootline of the *target page*
> * search for the first domain record in the target rootline
> * if this 'targetDomain' is not the same as the currently called 
> HTTP_HOST, prepend the link with this domain
> 
> * the flag is_siteroot (oage properties) does not play here any role 
> anymore
> 
> 
> Additionaly we think it makes sense to be able to force a domain 
> prepending (always prepend that domain). So i've added a 'forced' flag 
> to sys_domain, and:
> 
> * search for a domain record which has the 'forced' flag within the 
> target page rootline
> 
> So a subpage would be prepended with the 'forced' domain, even if the 
> page would be available within the current domain. This is pretty 
> helpful for independent subpages like in christophers example.
> 
> 
> The attached patch implements this solution. It's created initially by 
> Oli and discussed with Ingmar. Addionally i implemented the 'forced' 
> flag in the domain record.
> 
> 
> 
> Known Issues:
> * caching / domain name
> 
> The patch takes the current domain (HTTP_HOST) into account.
> If a page is available by multiple domains, and is cached the solution 
> may fail, if the page is delivered from cache.
> So we need separate caches per HTTP_HOST, which can be achieved easily 
> by adding the HTTP_HOST to teh cache identifier/hash
> I'm not that into the caching mechanism, so someone need to help out.
> If i remember right, Dmirty told he started to implement something like 
> that for memcache caching.
> 
> 
> * speed up by using a cache for sys_domains
> 
> currently we do a database query on sys_domains for *each* typolink on 
> the page. I'm sure we can save some queries, if we memroize all records 
> in an array (i think sys_domain would not contain many records usually).
> But i'm not sure where to store that array. Any suggestions? (TSFE, 
> GLOBALS)
> 
> 
> Note:
> i'm not sure, if this is a new feature (due to the forced flag in 
> sys_domain), or more like an 'enhanced' bugfix
> 
> Note II:
> Before we can commit this, we should solve the caching issue!
> For testing and reviewing the patch, you may want to turn off caching.
> 
> regards
>    tobias
> 
> 
> 
> 
> Christopher Hlubek schrieb:
>> Hi,
>>
>> This is an SVN patch request.
>>
>> Type: Bugfix
>>
>> Branches: Trunk, TYPO3_4-2
>>
>> Bugtracker references:
>> http://bugs.typo3.org/view.php?id=9046
>>
>>
>> Problem:
>>
>> Consider the following setup with multiple domains:
>>
>> + root (domain A, siteroot)
>> |
>> +--+ Subsite (domain B, siteroot)
>> | |
>> | +--+ Subpage
>> |
>> +--+ Some Page
>> |
>> +--+ Other Page
>>
>> Even with typolinkEnableLinksAcrossDomains enabled, the links from the 
>> subsite (domain B) back to some page on domain A won't get domain A 
>> prepended.
>>
>>
>> How to reproduce:
>>
>> Create a site with a similar page structure and multiple, nested 
>> domain records like above. Create a link from the inner domain to some 
>> page with the outer domain -> The link doesn't get the outer domain 
>> prepended.
>>
>> Solution:
>> In class.tslib_content.php (5324) there is a check for every part in 
>> the rootline, if the linked page shares a root page with the current 
>> page. It does! The recently added check for is_siteroot is not 
>> considered, because it is checked after this. So these checks should 
>> be swapped to check for is_siteroot first and find the domain record 
>> on the root page.
>>
>> Additionally there should be another tweak to not always include the 
>> domain for pages that link between the outer domain (which will always 
>> be found). This could be accomplished by comparing the HTTP_HOST with 
>> the domain that should be prepended.
>>
>>
>> Thanks
>> Christopher
> 



More information about the TYPO3-team-core mailing list