[Frage] PHP-Script einbinden TYPO3-Version: 6.1.1

  • Crockett Crockett
    TYPO3-Anwärter
    0 x
    6 Beiträge
    0 Hilfreiche Beiträge
    03. 01. 2014, 19:33

    Hallo,

    ich möchte ein in meiner Seite den Marker "PROFIL" durch den Inhalt ersetzen, der mir von einem PHP-Script geliefert wird. Seit der Version 6 geht ja anscheinenden die Funktion PROFIL = PHP_SCRIPT nicht mehr und man muss mit USER arbeiten. Leider funktioniert das noch nicht so, wie ich das gerne hätte. Am Ende wird der Marker immer nur durch nichts ersetzt.

    Zuerst mein Typoscriptausschnitt

    1. includeLibs.random = fileadmin/scripte/randomimage.php
    2.  
    3. PROFIL = USER
    4. PROFIL.userFunc = random->main

    Und hier noch die PHP-Klasse

    1. <?php
    2.  
    3. class random
    4. {
    5. function main()
    6. {
    7. $fpath='./../Bilder_Design/Profilmaennchen/';
    8. $rimage=array();
    9. $dh = opendir($fpath);
    10. while (false !== ($filename = readdir($dh)))
    11. {
    12. if ($filename != "." && $filename != ".." && !is_dir($fpath.$filename)) { $rimage[] =$fpath.$filename; }
    13. }
    14. if(count($rimage)>0) {
    15. shuffle($rimage);
    16. return '<img src="'.$rimage[0].'" alt="random" width="200">';
    17. }
    18. }
    19. }
    20.  
    21. ?>


  • 1
  • toifel toifel
    Jedi-Ratsmitglied
    0 x
    831 Beiträge
    96 Hilfreiche Beiträge
    06. 01. 2014, 10:29

    Von typo3.org zum Thema userFunc:

    Note: When using a function, the name of the function has to start with "user_". When using a class, the name of the class must start with "user_" (there are no conditions on the name of the method).

  • Crockett Crockett
    TYPO3-Anwärter
    0 x
    6 Beiträge
    0 Hilfreiche Beiträge
    06. 01. 2014, 16:52

    Danke für die Antwort, wer lesen kann ist halt doch im Vorteil :(
    Doch leider funktioniert es immer noch nicht. Der entsprechende Marker wird durch nichts ersetze. (Und ja da sind Dateien in diesem Ordner)
    Hier noch einmal die beiden Codeausschnitte:

    1. <?php
    2. class user_random
    3. {
    4. function main()
    5. {
    6. $fpath='./../Bilder_Design/Profilmaennchen/';
    7. $rimage=array();
    8. $dh = opendir($fpath);
    9. while (false !== ($filename = readdir($dh)))
    10. {
    11. if ($filename != "." && $filename != ".." && !is_dir($fpath.$filename)) { $rimage[] = $fpath.$filename; }
    12. }
    13. if(count($rimage)>0)
    14. {
    15. shuffle($rimage);
    16. return '<img src="'.$rimage[0].'" alt="random" width="50">';
    17. }
    18. }
    19. }
    20. ?>

    1. includeLibs.user_random = fileadmin/scripte/randomimage.php
    2.  
    3. PROFIL = USER
    4. PROFIL.userFunc = user_random->main

  • jenses jenses
    Flash Gordon
    0 x
    3087 Beiträge
    106 Hilfreiche Beiträge
    07. 01. 2014, 06:10

    Zitiert von: Crockett
    Danke für die Antwort, wer lesen kann ist halt doch im Vorteil

    Wer [b]richtig lesen[/b] kann, ist noch mehr im Vorteil:
    [i]Note: When using a function, the [b]name of the function[/b] has to start with "user_"[/i]

  • Crockett Crockett
    TYPO3-Anwärter
    0 x
    6 Beiträge
    0 Hilfreiche Beiträge
    07. 01. 2014, 19:41

    Ich hatte das so verstanden, dass es egal ist, wenn man die Klasse mit user_ deklariert. Aber egal ... ich habe den Hinweis natürlich gleich mal umgesetzt, aber leider funktioniert es immer noch nicht #angry#. Ich verstehe das einfach nicht.

  • jenses jenses
    Flash Gordon
    0 x
    3087 Beiträge
    106 Hilfreiche Beiträge
    08. 01. 2014, 07:43

    Zitiert von: jenses
    Zitiert von: Crockett
    Danke für die Antwort, wer lesen kann ist halt doch im Vorteil

    Wer [b]richtig lesen[/b] kann, ist noch mehr im Vorteil:
    [i]Note: When using a function, the [b]name of the function[/b] has to start with "user_"[/i]

    Tja, gilt auch für mich :-p
    "When [b]using a class[/b], the name of the [b]class must start with "user_"[/b] (there are no conditions on the name of the method)."
    Du hast es also schon mal richtig gemacht.

    Zu deinem Problem:
    Lies nochmal in der TSRef zum Thema nach,
    vor allem auch den Hinweis auf typo3/sysext/cms/tslib/media/scripts/example_callfunction.php.
    Beispielsweise hast du vergessen, deiner Funktion $content und $conf zu übergeben sowie $content per return zurückzugeben.
    Dann ist es bei unerwarteten Ergebnissen immer eine gute Idee,
    sich per debug($my_variable,'irgendein Label'); zu überprüfen,
    ob überhaupt irgendetwas vorhanden ist, was sich zurückgeben läßt.
    Im InstallTool mußt du eventuell die entsprechenden Parameter ändern,
    falls du Fehlermeldungen abgeschaltet hast.

  • Chrissli Chrissli
    Jedi-General
    0 x
    1015 Beiträge
    28 Hilfreiche Beiträge
    09. 01. 2014, 02:37

    Kann mich täuschen, aber die Funktionsnamen die mit user_ beginnen müssen waren bei den User-Conditions, so wie Crockett es umgesetzt hat sollte, wie jenses bereits gesagt hat, vollkommen korrekt sein, ebenso wie das Fehlen der Übergabeparameter, in wie weit die erforderlich sind kann ich dir nicht sagen, aber korrekterweise solltest dudie Übergeben, auch wenn nicht benötigt.

    Eines ist mir aber aufgefallen:
    Dein return erfolgt nur wenn $rimage nicht leer ist.
    Versuch doch mal
    1. Pfad absolut anzugeben zum Test. Da Fehler von Typo3 nicht direkt angezeigt werden, kann es ja einfach sein, dass der relative Pfad nicht ganz passt.
    2. Sollte auch das nicht funktionieren, versuche doch mal die Funktion ( zuerst mit absolutem Pfad ) ausserhalb von Typo3 aufzurufen. Vielleicht liegt der Fehler ganz wo anders

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

  • 1