Content Element in Extension (wirklich) rändern

  • MrLight MrLight
    T3PO
    0 x
    25 Beiträge
    1 Hilfreiche Beiträge
    23. 05. 2012, 19:24

    Hallo Forum, hallo Mitstreiter..

    (Ja ich weiss dass das schon zich mal besprochen wurde)

    Was ich machen möchte:

    Ein (oder mehrere) Content Elemente Laden, doch bevor diese ausgegeben werden nachbearbeiten, zB, mit einem str_replace, doch das funktioniert nicht.

    Egal ob ich es mit

    1. $content = $this->cObj->RECORDS($tt_content_conf);

    oder mit:

    1. $content = $this->cObj->cObjGetSingle('RECORDS', $conf);

    beides liefert mir nur so etwas:

    1. <!--INT_SCRIPT.1fab6de44e5349f0127d846c53edaa4e-->

    ganz einfach zu überprüfen mit:

    1. $content = str_replace("<!--", "<!-- ", $content);

    Doch da kann ich nichts machen oder modifizieren. Zwar wird dieser String von typo3 in das gewünschte Content Element ersetzt, doch für mich unerreichbar.

    Ich suchte schon cObj irgendeine Funktion um dies selber zu rendern, doch ohne erfolg ...

    Um paar Tips währe ich dankbar ..

    LG

    MrLight :-)


  • 1
  • aemka aemka
    Jedi-Meister
    0 x
    388 Beiträge
    0 Hilfreiche Beiträge
    24. 05. 2012, 00:03

    USER_INT Plugins kannst du in php meines Wissens nicht mit cObjGetSingle rendern.

    Du könntest das aber vlt. auch mit einem Frontend-Core-Hook erreichen, insgesamt hört sich die ganze Idee, so etwas zu tun, aber nach "von hinten durch die Brust" an.

  • MrLight MrLight
    T3PO
    0 x
    25 Beiträge
    1 Hilfreiche Beiträge
    24. 05. 2012, 00:28

    Irgendwie hast Du recht. Doch ich schreiben eine WhiteLabel Extension, in der man Conten Elemente, JS und CSS Dokumente, wie eich einen Zusatz-String angibt, welcher im htaccess benutzt wird um per rewriteRule die Elemente zum zweiten Server umzubiegen. (Ich weiss, es klingt kompliziert)

    Zurück zu meinem Problem. (Frontend-Core-Hook)

    Ich probier gerade die Ausgabe per TS an eine Funktion umzulenken, doch es funktioniert nicht richtig. Irgendwie interpretier ich die gefundenen Infos falsch ...

    Ich füge TS hinzu:

    1. page = PAGE
    2. page.typeNum = 0
    3.  
    4. includeLibs.irgendwas = typo3conf/ext/nao_white_label_plugin/pi1/class.tx_naowhitelabelplugin_pi1.php
    5.  
    6. page.10 = RECORDS
    7. page.10.stdWrap.postUserFunc = tx_naowhitelabelplugin_pi1->prepareRootJokerTS

    Meine Extension sieht (Ausschnitt wie folgt aus:

    1. class tx_naowhitelabelplugin_pi1 extends tslib_pibase {
    2. ...
    3. function prepareRootJokerTS ($content, $conf) {
    4. $search = '<!--';
    5. $replace = "<!-- ";
    6. $newBody = str_replace($search, $replace, $content);
    7. return $newBody;
    8. }
    9. ...
    10. }

    Doch irgendwie wird die Seite nicht durch die Funktion geschleust.

    LG

    MrLight :-)

  • MrLight MrLight
    T3PO
    0 x
    25 Beiträge
    1 Hilfreiche Beiträge
    25. 05. 2012, 14:42

    Korrektur:
    im TS:Setup:

    1. tt_content.stdWrap.postUserFunc = tx_naowhitelabelplugin_pi1->prepareRootJokerTS

    wobei tx_naowhitelabelplugin_pi1 mein Plugin ist, und prepareRootJokerTS die auszuführende Funktion ist.

    und die Funktion:

    1. function prepareRootJokerTS ($content, $conf) {
    2. $search = array('<!--');
    3. $replace = array('<!--x');
    4. $newBody = str_replace($search, $replace, $content);
    5. return $newBody;
    6. }

    so funktioniert zwar der Zugriff, aber das Problem bleibt das Selbe, der Content ist in diesem Moment noch nicht gerendert.

    Also bleibt mir anscheinend nur noch der Weg über das Hook.

    Was verstehst Du unter: "Frontend-Core-Hook"?

    Ich habe ein wenig gesucht und gelesen, und fand nur Hooks:

    callUserFunction und getUserObj

    Welches meinst Du nun? Ich komm auch nich mit den gefundenen Anleitungen nich ganz klar, wo ich was ändern soll.

    Sagen wir mal, ich habe zwei eigene Plugins:

    tx_plugin1_p1: Die Extension die "Ge-hookt" werden soll (d.h.: dessen Ausgabe soll nachbearbeitet werden) und

    tx_plugin2_p1: Die Extension die den Hook durchführt (d.h. diese bekommt den gerenderten Content von tx_plugin1_p1, und verändert diesen bevor er ausgegeben wird..

    Hast Du ein Beispiel, wo ich nachlesen kann?

    L.G.

    Mr Light :-)

  • 1