| Autor |
Nachricht |
|
Verfasst am: 05. 11. 2008 [15:28]
|
|
Kitsunet
Themenersteller
Dabei seit: 02.02.2006
Beiträge: 2034
|
Ich weiß nicht genau wo ich ansetzen soll, folgende Situation:
Ich lese mir über Typoscript Daten aus der Datenbank aus und erzeuge daraus eine CSV Datei (alles mit TS), soweit auch ohne Probleme.
Jetzt möchte ich allerdings am Ende noch ein paar Formatierungen vornehmen also habe ich über page.stdWrap.postUserFunc versucht eine PHP Funktion zu nutzen die alles weitere dann erledigt. Mit postUserFunc funktioniert es nicht wie gewünscht, es sieht fast so aus, als würde die Funktion gar nicht ausgeführt.
Benutze ich nun postUserFuncInt sieht alles genau so aus, wie ich es mir vorstelle, ABER nur genau einmal. Rufe ich die Datei dann nochmal ab ist das Ergebnis wie bei postUserFunc. Erst wenn ich den Cache lösche bekomme ich wieder einmal das richtige Ergebnis.
Ich habe schon config.no_cache = 1 gesetzt, das macht aber absolut keinen Unterschied. selbst mit Cachedauer auf 1 Sekunde klappt es nur nach dem löschen des Caches im Backend. Die Frage ist jetzt ob man das irgendwie anders lösen kann, bzw. woran das liegen könnte.
[Dieser Beitrag wurde 2mal bearbeitet, zuletzt am 05.11.2008 um 15:41.]
|
|
Verfasst am: 07. 11. 2008 [10:21]
|
|
fabikaze
Dabei seit: 04.07.2007
Beiträge: 14
|
Du kannst in den Page properties ein Häckchen bei "no cache" setzen. Das hat bei mir funktioniert, allerdings hatte ich mit config.no_cache auch keine Probleme.
Teste es doch mal.
Bei Extensions kann man auch in der localconf
t3lib_extMgm::addPItoST43 dem letzten Wert auf 0 setzten. Dann werden Frontend Plugins nicht mehr gecached. Ist jetzt nicht direkt dein Problem, vielleicht hilfts dir tortzdem irgendwie.
Beispiel
t3lib_extMgm::addPItoST43($_EXTKEY,'pi1/class.tx_extension_pi1.php','_pi1','list_type',0);
|
|
Verfasst am: 07. 11. 2008 [16:39]
|
|
Kitsunet
Themenersteller
Dabei seit: 02.02.2006
Beiträge: 2034
|
Danke für die Antwort. Also natürlich hatte ich auch alternativ mal no_cache als Parameter an die URL angehangen und auch mal in den Page Properties gesetzt, hat alles nichts gebracht. Ich hab jetzt erstmal eine andere Lösung, ist also nicht mehr dringend, allerdings würde ich schon noch gerne wissen, was das für ein Problem ist, also falls noch jemand eine Idee hat...
|
|
Verfasst am: 07. 11. 2008 [20:38]
|
|
steffenk
Moderator
Dabei seit: 22.09.2005
Beiträge: 4839
|
ich nehme an das Du einen page-type benutzt und das Ergebnis normal renderst?
Dann hab ich eine wesentlich elegantere Lösung, die auch mit Cache funktioniert:
Nutze den Hook tslib_fe-contentStrReplace. Dort kannst Du kurz vor der Ausgabe alles so verändern wie Du willst, ohne das es nochmal processed wird.
|
|
Verfasst am: 07. 11. 2008 [21:06]
|
|
Kitsunet
Themenersteller
Dabei seit: 02.02.2006
Beiträge: 2034
|
Danke steffen, das ist das, was ich gesucht habe, denke ich!
|
|
Verfasst am: 07. 11. 2008 [21:20]
|
|
steffenk
Moderator
Dabei seit: 22.09.2005
Beiträge: 4839
|
hier mal ein Beispiel für die nutzung:
//in localconf
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['tslib_fe-contentStrReplace']['myext'] = 'EXT:myext/tx_myext_hooks->feReplace';
//in hook Klasse
function feReplace($params, $parentObject) {
$matches = array();
$expression = '/\b___UID<img src="typo3conf/ext/mm_forum//res/smilies/icon_frown.gif" alt="icon_frown.gif" />\d+)___\b/s';
preg_match_all($expression, $parentObject->content, $matches);
if (count($matches)) {
foreach ($matches[1] as $key => $match) {
$rec = $this->pi_getRecord('tt_news', $match);
$clicks = $rec['tx_myext_clicks'];
$params['search'][] = $matches[0][$key];
$params['replace'][] = $clicks;
}
}
}
|