[Frage] Standalone PHP-Programm über userFunc in Typo3 Content einfügen TYPO3-Version: 6.1.7

  • 0 x
    64 Beiträge
    0 Hilfreiche Beiträge
    17. 07. 2014, 15:43

    Typo3 Versiono: 6.2.3

    Hallo liebe Typo3-Gemeinde,

    ich versuche das auf PHP basierende Programm QuiXplorer manuell im Content-Bereich eines Templates einzubinden (gibt es auch als Backend Extension), bekomme es aber einfach nicht hin. So sieht das PHP-Script der index.php von QuiXplorer aus:

    1. <?php
    2.  
    3. umask(002);
    4.  
    5. require "./.include/init.php";
    6.  
    7. switch($GLOBALS["action"]) {
    8. case "edit":
    9. require "./.include/fun_edit.php";
    10. edit_file($GLOBALS["dir"], $GLOBALS["item"]);
    11. break;
    12.  
    13. case "delete":
    14. require "./.include/fun_del.php";
    15. del_items($GLOBALS["dir"]);
    16. break;
    17.  
    18. .
    19. .
    20. .
    21. ?>

    Es werden also viele andere PHP-Dateien included. Jetzt habe ich folgendes versucht.

    1. 1includeLibs.user_quix = fileadmin/pfad/user_quix.php
    2. lib.phpskript = USER
    3. lib.phpskript.userFunc = user_quix -> ausgabe

    Hier die Marker-Einbindung ins Template:

    1. <f:format.raw> <f:cObject typoscriptObjectPath="lib.phpscript" /> </f:format.raw>

    Kann man mit userFunc nur einzelne Klassen oder ein gesamtes Script aufrufen lassen? Kann mir Jemand weiterhelfen? Gibt es eine Alternative zu userFunc?

    Beste Grüße, Dank und Grüße aus Chemnitz
    Tolga


  • 1
  • Chrissli Chrissli
    Jedi-General
    0 x
    1016 Beiträge
    28 Hilfreiche Beiträge
    17. 07. 2014, 16:21

    Zumindes das was du als userFunc hinterlegst muss Klasse->Methode sein.
    Was diese Methode dann macht, sprich ein PHP-Skript inkludiert oder was auch immer ist ein anderes paar Stiefel ;)
    Der saubere Weg führt aber über OOP

    Wie das dann per USER eingebunden wird wurde schon des öfteren hier erläutert, z.b. hier [url]http://www.typo3.net/forum/thematik/zeige/thema/118299/?tx_mmforum_pi1[showForm]=0&cHash=8fa1a19f5ddab5d486c74e455172415d[/url]

    God's in his heaven, all's right with the world

  • 0 x
    64 Beiträge
    0 Hilfreiche Beiträge
    17. 07. 2014, 18:24

    Ich habe versucht das Beispiel, wohin der Link verweist, anzuwenden; hat aber nicht funktioniert. 1. Läd der Browser etwa eine Minute, bis ich nachprüfen kann, ob es funktioniert hat 2. Lade ich ja auch wieder eine Funktion.

    Du meinst über die Funktion die QuiXplorer index.php inkludieren quasi? Jetzt bekomme ich nicht mal mehr eine Ausgabe hin. In vorherigen Versuchen konnte ich wenigstens dem Script ein echo "Test"; entlocken. Ich meine, da hätte ich auch gar keine Funktion verwendet *lautdenk Heeeeelp.

  • 0 x
    64 Beiträge
    0 Hilfreiche Beiträge
    18. 07. 2014, 13:34

    Hallo,

    falls wer noch die Probleme hat, hier eine funktionierende Variante.

    Typoscript

    1. includeLibs.user_klasse = fileadmin/templates/vdw/layouts/user_klasse.php
    2. lib.phpscript = USER
    3. lib.phpscript.userFunc = user_klasse->funktion

    PHP

    1. <?php
    2. class user_klasse
    3. {
    4. function funktion() {
    5. $foo = include 'quix.php';
    6. return $foo;
    7. }
    8. }
    9.  
    10. ?>

    Wie man in dem PHP-Script sieht, habe ich ein komplettes PHP-Script includiert und gebe es mit return aus. Hier treten einige Probleme auf, was die relativen Pfade angeht. Einige konnte ich eleminieren, Beispiel:

    1. # aus
    2. require ./.include/init.php";
    3. # wird
    4. require (dirname(__FILE__) . "/.include/init.php");
    5.  
    6. # In den Unterverzeichnissen muss man gegebenenfalls eine Pfad-Ebene rausschneiden.
    7. # Anlehnend and den "../"-Befehl, das geht mit zwei dirname-Befehlen hintereinander.
    8.  
    9. require (dirname(dirname((__FILE__))) . "/.config/conf.php");

    Ok, und eingebette im HTML-Code habe ich es wie folgt (also die Marker-Setzung):

    1. <f:format.raw> <f:cObject typoscriptObjectPath="lib.phpscript" /> </f:format.raw>

    Ich hoffe, dass ich irgendwem weiterhelfen konnte. Ich kämpfe mich jetzt weiter durch die Pfad-Anpassungen vom PHP-Script. Das kann ganz schön frickelig werden, aber es wird schon mal das gesamte PHP-Programm angesprochen und ausgegeben. Probleme könnten noch auftauchen, dass das Script nicht in dem dafür vorgesehenem Marker-Bereich bleibt, weil neue Unterseiten aufgerufen werden. Aber schauen wir mal.

    Wenn wer eine andere Methode hat, um ein gesamtes PHP-Programm an einer Markerposition einzufügen, kann er/sie es gerne posten.

    Beste Grüße
    Tolga

  • 1