Zum Inhalt springen

Mit userFunc ein PHP-Skript einbinden

Erstellt am 9. November 2010 · 3 Antworten · letzte Antwort am 9. November 2010

Tags: Frage

manchro ·

Hallo,

ich habe ein kleineres Problem, was ich auf meiner privaten Website die ich mit Typo3 erstellt habe nicht gelöst bekomme und zwar möchte ich ein PHP-Skript per userFunc auf einer Seite im Typo3 einbinden. Hier zu habe ich schon realativ viel gegooglet und so manches howto ausprobiert, jedoch ohne Erfolg. Daher wende ich mich an euch.

Ich verwende ein Typo3 der Version 4.4.4.

Im Internet habe ich folgendes Beispiel (z. T. auch mehrfach/abgewandelt) gefunden:

"Folgendes Typoscript in das Setup des Templates"

includeLibs.testMd5 = fileadmin/unterordner/testMd5.inc
temp.info = USER temp.info { 
  userFunc =user_testMd5->main 
  value=atest color=#11FAAA 
} page.XX<temp.info

Folgendes PHP Script unter fileadmin/unterordner/testMd5.inc abspeichern

<?
class user_testMd5 {

var $cObj;// The backReference to the mother cObj object set at call time

/**
* Call it from a USER cObject with 'userFunc = user_randomImage->main_randomImage'
*/

function main($content,$conf){
$content.='<span style="color:'.$conf["color"].'">'.$conf["value"].' as md5 '.md5($conf["value"]).'</span>';
return $content;
}
}
?>

Quelle

Das einzige was ich an dem Beispiel geändert habe, ich habe überall die Dateiendung in .inc geändert, was aber prinzipiell keinen Unterschied machen sollte, außer dass man den PHP-Code im Browser öffnen könnte, wenn man den direkten Pfad hat, was in meinem Fall nicht Sicherheitsrelevant ist, da dort keine Zugangsdaten etc. stehen. Desweiteren liegt mein Skript nicht unter /fileadmin/script.inc sondern in einem Unterordner von /fileadmin/, aber das dürfte doch auch nichts ausmachen oder?

Leider passiert wenn ich dieses Beispiel nach bastle nichts. Alle Caches habe ich gelert danach, es kommt zu keiner Fehlermeldung, aber auch zu keiner Ausgabe. Auch weiß ich aus der TsRef https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Index.html , dass man hier kein "echo" verwenden kann, sondern die Ausgabe nur über $content machen soll und dass jede Funktion mit user_ beginnen muss. Mache ich etwas falsch? Funktioniert das Beispiel bei euch?

Noch eine andere Frage, beim

page.XX<temp.info

muss ich das "XX" durch die Seiten-ID erstetzen (die im Browser angezeigt wird in der URL wenn ich eine bestimmte Steite aufrufe).

Danke für die Mühe die du dir gemacht hast meinen Text durchzulesen!

igorshmigor ·

Es fehlen in deinem Script ein paar Zeilenumbrüche. Richtig müsste es so aussehen:

includeLibs.testMd5 = fileadmin/unterordner/testMd5.inc
temp.info = USER 
temp.info { 
  userFunc =user_testMd5->main 
  value=atest 
  color=#11FAAA 
} 
page.XX<temp.info

das XX in page.XX steht nicht für eine Seiten-ID sondern ist als Platzhalter gedacht für irgendein Objekt. Es könnte page.10 sein oder page.10.marks.MEINMARKER. Hierfür solltest du dich mit dem generellen Aufbau einer Seite per TypoScript beschäftigen.

manchro ·
igorshmigor schrieb

Es fehlen in deinem Script ein paar Zeilenumbrüche. Richtig müsste es so aussehen:

includeLibs.testMd5 = fileadmin/unterordner/testMd5.inc
temp.info = USER 
temp.info { 
  userFunc =user_testMd5->main 
  value=atest 
  color=#11FAAA 
} 
page.XX<temp.info

das XX in page.XX steht nicht für eine Seiten-ID sondern ist als Platzhalter gedacht für irgendein Objekt. Es könnte page.10 sein oder page.10.marks.MEINMARKER. Hierfür solltest du dich mit dem generellen Aufbau einer Seite per TypoScript beschäftigen.

Hallo igorshmigor,

danke für den Hinweis. Die fehlenden Zeilenumbrüche sind beim Kopieren verloren gegangen und ich habe vergessen diese zu setzen. Leider kenne ich mich mit TypoScript nicht so gut aus. Also würde das TypoScript funktionieren, nur fehlt mir der Marker in der entsprechenden Seite, so dass nichts ausgegeben wird.

Vielleicht kannst du/evtl. jemand anders mir ja erklären, wie ich einen Marker setzen kann auf einer Seite, so dass das Skript an dieser Stelle eingebunden wird? Gibt es dafür ein Tutorial? Eigentlich bin ich bisher mit TypoScript weniger in Berührung geraten, aber jetzt stehe ich an einer Stelle, an der ich mehr können müsste, als ich kann.

Danke für deine Hilfe!

igorshmigor ·

Man muss ja nicht mit Markern arbeiten. Ich selbst arbeite manchmal auch ganz gerne ohne HTML-Templates.
Die einfachste Methode dein Script zu testen ist:

includeLibs.testMd5 = fileadmin/unterordner/testMd5.inc
temp.info = USER 
temp.info { 
  userFunc =user_testMd5->main 
  value=atest 
  color=#11FAAA 
} 
page=PAGE
page.10<temp.info

Dann hast du erst mal eine leere Seite auf der nur der Text steht "atest as md5 b50cd72da9f57f8bf6880303ff5b7622"

Eine gute Einführung in TYPO3 und TypoScript ist das Buch "Praxiswissen TYPO3" von Robert Meyer. Eine kostenlose PDF, die dem Buch sehr ähnlich ist und ebenfalls von Robert Meyer stammt, findest du unter http://www.mittwald.de/fileadmin/pdf/dokumentation.pdf