Zum Inhalt springen

Eigene PHP-Scripte ausgeben

Erstellt am 24. Juni 2014 · 6 Antworten · letzte Antwort am 11. Juli 2014

Tags: TYPO3 6.x, Frage

cherry ·

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:

<?php
   class user_klasse
   {
      function main()
      {
         return 'Dieser Text wurde durch PHP erzeugt.';
      }
   }
?>

Und das ist das dazugehörige TS:

includeLibs.user_klasse = fileadmin/templates/user_klasse.php
TICKER = USER
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?

Chrissli ·

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

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.

Chrissli ·

Kleines Beispiel:

page = PAGE
page {  
  typeNum = 0
  config {    
    sys_language_uid = 0
    locale_all = en_GB
    language = en
    sys_language_mode = content_fallback; 0      
    spamProtectEmailAddresses = ascii    
    baseURL = http://domain.com/    
    tx_realurl_enable = 1
    uniqueLinkVars = 1         
    metaCharset = utf-8
    doctype = html5
  }

  includeLibs {    
    STT = fileadmin/phpSkripte/SchweizerTypoTaschenmesser.php    
  }
}

page.10 = USER_INT
page.10.userFunc = SchweizerTypoTaschenmesser->whatTheHellIsGoingOn
page.10.meinParameter1 = Testwert1
page.10.userFunc.meinParameter.2 = Testwert2
<?php
class SchweizerTypoTaschenmesser {	
    
    public function whatTheHellIsGoingOn($content,$conf) {
            var_Dump($content,$conf);die;
        }
    }
}
?>

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.

cherry ·

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:

class user_klasse {    
    
    function ausgabe($content,$conf)    {   
        global $TSFE;        
        $TSFE->set_no_cache();
        $output = "Text";
        return $output; 
		}
		}
Chrissli ·

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.

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

die genaueren Benutzung findest du in der API-Dokumentation http://api.typo3.org/
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

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

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