Hallo,
ich habe einige Contentelemente erstellt wie hier beschrieben: https://fluidtypo3.org/documentation/templating-manual/templating/creating-templates/content-element.html
In der Section Main rufe ich einen eigenen Viewhelper auf, der einen Cookie auslesen soll
<f:section name="Main" />
<mydemoext:GetCookie argumentone="teststr"></mydemoext:GetCookie>
</div>
Nun möchte ich meine Seite zwar cachen:
config {
sendCacheHeaders = 1
cache = 1
no_cache = 0
cache_period = 300
}
aber wenn es möglich ist nur teilweilse. Habe mittlerweile schon viel gesucht und gegoogelt um etwas zu dem Thema zu finden, nur leider war ich nicht erfolgreich.
http://www.sk-typo3.de/richtiges-cachen-mit-pi_base.188.0.html hier habe ich eine mögliche Lösung gefunden nur weiß ich nicht, wie das zusammen mit meinen Fluidcontent Contentelementen funktioniert.
Vielen Dank und mit freundlichen Grüßen
Oder mach die Cookie-Sache mit JS.
Danke für eure Antworten. Auf den VHS Viewhelper bin ich auch schon gestoßen, allerdings weiß ich nicht so ganz wie ich den hier einsetzen kann.
Ich habe ein Fluid Template in dem ich den Content auf jeder Seite entsprechend einbinde. Mein Contentent Element gibt jetzt einiges an HTML aus, was gerne gecacht werden kann und nur ein kleiner Teil soll nicht gecacht werden.
Beispiel:
Content Element legt Div mit bestimmten CSS Klassen an, die durch das Content Element vom BE User festgelegt werden könnnen. In dem Div soll ein Bild ausgegeben werden, welches abhängig vom Cookie ist. Der Div mit seinen Klassen ist bei jeden Seitenaufruf gleich, kann also gecacht werden. Das Bild soll aber bei jedem Seitenaufruf neu "berechnet" werden.
Wie die Caching Struktur von Typo3 genau aufgebaut?
Wenn ich ein Partial oder eben den Content rendern lasse und Cache eingeschaltet ist, wird dann das gesamte Partial/Content gecacht? Oder wird untersucht, ob sich innherhalb des Partials Content befindet, der nicht gecacht werden soll?
Vielen Dank noch einmal bis hier hin.
Oder mach die Cookie-Sache mit JS.
Ist leider in diesem Fall nicht erwünscht/möglich.
Habe jetzt vielleicht doch eine Idee, werde ich daheim mal testen. Hier anhand dieses Beispiels: https://fluidtypo3.org/library/code-examples.html?tx_fluidshare_display[gist]=5&tx_fluidshare_display[action]=display&tx_fluidshare_display[controller]=Gist&cHash=e403004449572e5ede2dd38d6d268f99
Siehe Zeile 29.
<div xmlns:flux="http://typo3.org/ns/FluidTYPO3/Flux/ViewHelpers"
xmlns:v="http://typo3.org/ns/FluidTYPO3/Vhs/ViewHelpers"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
<f:layout name="Content" />
<f:section name="Configuration">
<flux:form id="gallery" wizardTab="MG">
<flux:field.inline.fal name="settings.images" multiple="TRUE" maxItems="20" />
</flux:form>
</f:section>
<f:section name="Preview">
<b><f:translate key="flux.gallery" /></b>
</f:section>
<f:section name="Resources">
</f:section>
<f:section name="Item">
<li><a href="{image.url}" title="{f:if(condition: image.description, then: '{image.title}: ', else: '{image.title}')}{image.description}" rel="gallery"><f:image treatIdAsReference="TRUE" src="{image.id}" alt="{image.title}" title="{f:if(condition: image.description, then: '{image.title}: ', else: '{image.title}')}{image.description}" width="170c" height="170c" /></a></li>
</f:section>
<f:section name="Main">
<div id="gallery">
<div class="gallery_list">
<ul class="xyztestclass>
<f:for each="{v:content.resources.fal(field: 'settings.images')}" as="image">
<v:render.uncache section="Item" arguments="{_all}" />
<f:comment>
<f:render section="Item" arguments="{_all}" />
</f:comment>
</f:for>
</ul>
</div>
</div>
</f:section>
</div>
Mittlerweile bin ich einen Schritt weiter.
Habe im dem Ordner, in dem auch meine FluidContent Struktur liegt unter Private/ einen Partials Ordner angelegt.
Diese Partials kann ich mit v:render.uncache nun Problemlos aufrufen. Sections in den Partials funktionieren auch. Nur kann dieser Viewhelper im Gegensatz zum normalen render Viewhelper keine Sections im gleichen Dokument rendern.
Möchte ich den uncache Viewhelper in dem Layout File meines Templates verwenden, kommt allerdings noch immer eine Fehlermeldung: Extension key "" is NOT loaded!
C:\xampp\htdocs\hht_7\typo3\sysext\fluid\Classes\View\TemplateView.php (Z.202):
00200: /** @var $actionRequest \TYPO3\CMS\Extbase\Mvc\Request */
00201: $actionRequest = $this->controllerContext->getRequest();
00202: return array(str_replace('@packageResourcesPath', ExtensionManagementUtility::extPath($actionRequest->getControllerExtensionKey()) . 'Resources/', $this->templateRootPathPattern));
00203: }
Es sieht so aus, als hätte meine Template-Extension keinen Extension Key, bzw. er kann in diesem Fall nicht gefunden werden. Hat jmd eine Idee, wie man den Fehler beheben kann?