Typo3

frontend plugin “howto”

da ich so meine probleme hatte, irgendwo nen ansatz zu finden, möchte ich einfach mal so schreiben wie man ein plugin anfängt. das wird hier nicht allzu umfangreich aber irgendwie hat mir kasper’s quickstart und die docu nich genug sagen können. man erstelle sich ein kleines framework mit dem quickstarter. kasper hat das eindrucksvoll in seinem video gezeigt. wenn man das einmal hat sollte man es aber ned mehr mit dem quickstarter anfassen. der quickstarter ist ja kein editor. also bei mir war keine datenbank im spiel oder sonstwas. ich wollte einfach nur meine bestehende gallery in typo3 integrieren. nachdem ich also mein plugin erstellt hab, wurde das erstmal im ext-manager aktiviert und auf ner seite eingefügt. dann hab ich mir die files gesucht. da ich das plugin lokal installiert hab war es unter typo3conf/ext/extension_key zu finden. das php script findet sich im verzeichnis pi1. das erste was feststellbar war, mit nem plugin kann man einfach html code in ne variable schreiben, welche man per return wieder rauswirft. der html code landet dann an entsprechender stelle in der seite. nächstes problem: wie kann ich variablen vom nutzer lesen und links im typo3 stil generieren? die klasse, die dein plugin beinhaltet erbt von der klasse tslib_pibase. darin sind alle wichtigen sachen enthalten. einen link kann man z.b. folgendermassen schreiben:

$this->pi_linkToPage(linktext,id,target,parameter);

linktext: string – ist halt der text unter dem link id: die id der zu verlinkenden seite, z.b. sich selbst: könnte man auslesen aus $GLOBALS[“TSFE”]->id target: string – für den a-tag parameter target. kann leer sein. parameter: array von name-value paaren.

$this->prefixId

liefert den extkey deines plugins. also beispiel:

array($this->prefixId."[variable]"=>wert)

die funktion liefert nen string mit dem link. also muss das result mit in die output variable. schon hat man nen schicken link mit nem parameter übergeben. bsp:

$bla = $this->pi_linkToPage("Testlink",384,"",array($this->prefixId."[key]"=>1));

also beinhaltet jetzt $bla

<a href="index.php?id=384&myext[key]=1">Testlink</a>

so, wie komm ich jetzt an die mir übergebenen variablen wieder ran? die findest du im array

$this->piVars[]

also ein aufruf unseres links würde ergeben, dass

$this->piVars['key'] == 1

das alles klappt so natürlich nicht, denn typo3 cached die seite. das script kommt gar nicht dazu irgendwelche variablen auszulesen wenn die seite schon im cache ist, also muss unbedingt als allererstes in der main() gesagt werden, dass diese seite nicht zu cachen ist:

$GLOBALS["TSFE"]->set_no_cache();

jo, soviel zur interaktion mit dem benutzer. wenn du dich weiter belesen willst, empfehle ich die docu auf typo3.org und die datei class.tslib_pibase.php ansonsten halt php.net und ein gutes buch zur objektorientierung.