[TYPO3-core] RFC: #9046: Nested domain linking with domain record on root page
Tobias Liebig
mail_typo3 at etobi.de
Thu Sep 3 11:28:25 CEST 2009
Any comments on this?
Help needed regarding the caching issue!
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