postUserFuncInt und Cache

  • kitsunet kitsunet
    Flash Gordon
    0 x
    2559 Beiträge
    27 Hilfreiche Beiträge
    05. 11. 2008, 15:28

    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.

    config.baseURL = http://www.kitsunet.com/
    TYPO3 Flow und Neos Community Contact
    Release Manager TYPO3 Neos 1.1
    Ich habe Probleme mit den PMs hier, also schreibt mir bitte eine Mail oder über Twitter!


  • 1
  • fabikaze fabikaze
    T3PO
    0 x
    14 Beiträge
    0 Hilfreiche Beiträge
    07. 11. 2008, 10:21

    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

    1. t3lib_extMgm::addPItoST43($_EXTKEY,'pi1/class.tx_extension_pi1.php','_pi1','list_type',0);

  • kitsunet kitsunet
    Flash Gordon
    0 x
    2559 Beiträge
    27 Hilfreiche Beiträge
    07. 11. 2008, 16:39

    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...

    config.baseURL = http://www.kitsunet.com/
    TYPO3 Flow und Neos Community Contact
    Release Manager TYPO3 Neos 1.1
    Ich habe Probleme mit den PMs hier, also schreibt mir bitte eine Mail oder über Twitter!

  • steffenk steffenk
    Obi-Wan Kenobi
    0 x
    4666 Beiträge
    0 Hilfreiche Beiträge
    07. 11. 2008, 20:38

    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.

  • kitsunet kitsunet
    Flash Gordon
    0 x
    2559 Beiträge
    27 Hilfreiche Beiträge
    07. 11. 2008, 21:06

    Danke steffen, das ist das, was ich gesucht habe, denke ich!

    config.baseURL = http://www.kitsunet.com/
    TYPO3 Flow und Neos Community Contact
    Release Manager TYPO3 Neos 1.1
    Ich habe Probleme mit den PMs hier, also schreibt mir bitte eine Mail oder über Twitter!

  • steffenk steffenk
    Obi-Wan Kenobi
    0 x
    4666 Beiträge
    0 Hilfreiche Beiträge
    07. 11. 2008, 21:20

    hier mal ein Beispiel für die nutzung:

    1. //in localconf
    2. $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['tslib_fe-contentStrReplace']['myext'] = 'EXT:myext/tx_myext_hooks->feReplace';
    3.  
    4. //in hook Klasse
    5. function feReplace($params, $parentObject) {
    6.  
    7.  
    8. $matches = array();
    9. $expression = '/\b___UID:(\d+)___\b/s';
    10. preg_match_all($expression, $parentObject->content, $matches);
    11.  
    12. if (count($matches)) {
    13. foreach ($matches[1] as $key => $match) {
    14. $rec = $this->pi_getRecord('tt_news', $match);
    15. $clicks = $rec['tx_myext_clicks'];
    16. $params['search'][] = $matches[0][$key];
    17. $params['replace'][] = $clicks;
    18. }
    19. }
    20. }

  • 1