[Frage] Eigene PHP-Scripte ausgeben TYPO3-Version: 6.1.7

  • cherry cherry
    Jedi-Meister
    0 x
    415 Beiträge
    0 Hilfreiche Beiträge
    24. 06. 2014, 09:38

    Hallo,
    ich versuche gerade ein eigenes PHP-Script in die Seite einzubinden. Dabei bin ich zunächst folgendem Beispiel "aus dem Netz" nachgegangen.
    Das ist die PHP-Seite die in einem Ordner liegt:

    1. <?php
    2. class user_klasse
    3. {
    4. function main()
    5. {
    6. return 'Dieser Text wurde durch PHP erzeugt.';
    7. }
    8. }
    9. ?>

    Und das ist das dazugehörige TS:

    1. includeLibs.user_klasse = fileadmin/templates/user_klasse.php
    2. TICKER = USER
    3. TICKER.userFunc = user_klasse->main

    Ich möchte den Inhalt am Marker TICKER ausgeben. Leider gibt es jedoch keine Ausgabe. Kann mir da jemand weiterhelfen?


  • 1
  • Chrissli Chrissli
    Jedi-General
    0 x
    1015 Beiträge
    28 Hilfreiche Beiträge
    24. 06. 2014, 11:15

    Eigentlich sollten die Funktionen die aus Typo3 heraus aufgerufen werden die parameter $content und $conf haben, vielleicht liegt es einfach nur daran.

    1. function main($content,$conf) {

    Ansonsten würde ich erst mal einen "echo" oder "die" in die Funktion einbauen, anstelle des Return, dann siehst du ob sie vielleicht aufgerufen wird aber bei deiner Ausgabe etwas nicht passt, z.b. Tippfehler im Marker oder nicht zugewiesen oder oder.

    Kleiner Hint am Rande: In den aktuellen Typo3-Versionen scheint das Präfix "user_" bei den Klassen nicht mehr erforderlich zu sein.

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

  • cherry cherry
    Jedi-Meister
    0 x
    415 Beiträge
    0 Hilfreiche Beiträge
    08. 07. 2014, 15:53

    Leider bekomme ich immer noch keine Ausgabe. Ist das wirklich so kompliziert?

  • Chrissli Chrissli
    Jedi-General
    0 x
    1015 Beiträge
    28 Hilfreiche Beiträge
    08. 07. 2014, 17:34

    Kleines Beispiel:

    1. page = PAGE
    2. page {
    3. typeNum = 0
    4. config {
    5. sys_language_uid = 0
    6. locale_all = en_GB
    7. language = en
    8. sys_language_mode = content_fallback; 0
    9. spamProtectEmailAddresses = ascii
    10. baseURL = http://domain.com/
    11. tx_realurl_enable = 1
    12. uniqueLinkVars = 1
    13. metaCharset = utf-8
    14. doctype = html5
    15. }
    16.  
    17. includeLibs {
    18. STT = fileadmin/phpSkripte/SchweizerTypoTaschenmesser.php
    19. }
    20. }
    21.  
    22. page.10 = USER_INT
    23. page.10.userFunc = SchweizerTypoTaschenmesser->whatTheHellIsGoingOn
    24. page.10.meinParameter1 = Testwert1
    25. page.10.userFunc.meinParameter.2 = Testwert2

    1. <?php
    2. class SchweizerTypoTaschenmesser {
    3.  
    4. public function whatTheHellIsGoingOn($content,$conf) {
    5. var_Dump($content,$conf);die;
    6. }
    7. }
    8. }
    9. ?>

    Das kannst du als eigenes Template testen, müsste dann die Parameter debuggen und den Seitenaufruf abbrechen.
    Wenn das nicht funktioniert mache ich immer einen die() an die PHP Datei ganz oben, um zu sehen ob sie überhaupt eingebunden wird. Und dann hangel ich mich eben nach unten durch. Meistens sind das nur Flüchtigkeitsfehler, so kompliziert ist das gar nicht. Ich find Extensions entwickeln weitaus komplizierter.

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

  • cherry cherry
    Jedi-Meister
    0 x
    415 Beiträge
    0 Hilfreiche Beiträge
    10. 07. 2014, 17:04

    Danke, bin jetzt einen Schritt weiter. Ich habe eine Ausgabe.
    Wie bringe ich jetzt im PHP-Script eine DB-Abfrage mit Schleife rein, und geben diese dann mit return aus? Mein PHP sieht so aus:

    1. class user_klasse {
    2.  
    3. function ausgabe($content,$conf) {
    4. global $TSFE;
    5. $TSFE->set_no_cache();
    6. $output = "Text";
    7. return $output;
    8. }
    9. }

  • Chrissli Chrissli
    Jedi-General
    0 x
    1015 Beiträge
    28 Hilfreiche Beiträge
    11. 07. 2014, 08:48

    Entweder über die dir bekannten mittel mit eigener mysqli Verbindung oder
    über die Typo3 API, die meisten davon kannst du über $GLOBALS['TYPO3_DB'] erreichen, so z.B.

    1. $GLOBALS['TYPO3_DB']->exec_SELECTgetRows($select_fields, $from_table, $where_clause)

    die genaueren Benutzung findest du in der API-Dokumentation [url]http://api.typo3.org/[/url]
    oder in diesem Fall in der Datei "typo3/sysext/core/Classes/Database/DatabaseConnection.php"

    Nützlich ist in diesem Zusammenhang auch die hausinterne var_dump-Funktion

    1. \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($variable,'Bezeichnung im Debug')

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

  • cherry cherry
    Jedi-Meister
    0 x
    415 Beiträge
    0 Hilfreiche Beiträge
    11. 07. 2014, 09:17

    Vielen Dank, ich habe es jetzt hinbekommen. Ist wirklich einfacher als eine Extension zu erstellen ;)

  • 1