[TYPO3-english] Do not cache part of Fluid template. How to?
Viktor Livakivskyi
invisible.kinder at gmail.com
Mon Nov 4 16:21:02 CET 2013
Hi, List.
Some time ago a feature request [1] was opened on Forge to allow enabling/disabling of cache for individual Fluid partials. Request was abandoned and closed. Okay, I can leave with this, but, please, explain me, how can I, i.e., output current logged in user's name and email in Fluid?
I've tried following:
1. Easy mode. Just pass them via assign. Fails, because TYPO3 page's cache stores complete page for whole "Registered" usergroup.
2. Normal mode. Extract dynamic parts to a partial and pass different arguments to it from within template (username, email, timestamp). Fails for same reason.
3. Hard mode. Create extension, plugin, controller and non-cacheable action. Call it via v:render.request [2]. No luck...
4. Nightmare mode. Same as item 3, but additionaly create:
lib.noCache = COA
lib.noCache.pageHeader = USER
lib.noCache.pageHeader {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
pluginName = Smitemplates
extensionName = SmiTemplates
controller = NoCache
vendorName = Vendor
action = pageHeader
switchableControllerActions {
NoCache {
1 = pageHeader
}
}
settings =< plugin.tx_smitemplates.settings
persistence =< plugin.tx_smitemplates.persistence
view =< plugin.tx_smitemplates.view
update =< plugin.tx_smitemplates.update
}
Call it in template, like:
<f:cObject typoscriptObjectPath="lib.noCache.pageHeader" />
And assign in controller:
$this->view->assign('user', $GLOBALS['TSFE']->fe_user->user);
But, as you may have noticed, it is too non-intuitive way. Moreover, if I need some variable, that available in template, how can I bypass it to this non-cacheable controller then?
Maybe, I dig into wrong way and someone else knows better solution?
[1]: http://forge.typo3.org/issues/43457
[2]: https://fedext.net/viewhelpers/vhs/master/Render/RequestViewHelper.html
More information about the TYPO3-english
mailing list