[TYPO3-german] phpcode
Patrick Lobacher
plobacher at n-o-g.de
Wed Mar 12 15:46:49 CET 2008
Hallo Thomas,
an der Stelle hört leider der triviale Copy&Paste Modus auf - d.h. das
Template-Script ist zwar prinzipiell funktionstüchtig, muss aber
individuell angepasst werden:
Prinzipiell muss es in die main()-Funktion (oder, was so nicht imk Buch
steht, in eine Funktion, die in der main() aufgerufen wird).
Nehmen wir einmal den Fall wie er auf Seite 640 in Abbildung 35.28
gezeigt wird. Dort handelt es sich um den sogenannten listView (dieser
wird immer aufgerufen, wenn nichts anderes eingestellt ist).
Dass heisst, der Code befindet sich in der main() unter "default:" -
dort wird die Funktion "listView()" aufgerufen, die ihrerseits wieder
die Funktion pi_list_makelist (existiert nur in der Basis-Klasse)
aufruft und diese wiederum die beiden pi_list_row (für den Inhalt einer
Zeile) und pi_list_header (für die Überschrift).
Dort könnte man also den Template-Code einsetzen.
Wenn ich etwas Zeit habe, werde ich das ausformulieren, da ich ohnehin
plane die Extension richtig zu veröffentlichen und dann werde ich Dir
den Code samt Erklärung dazu schicken.
Patrick
Thomas Bartholomäus schrieb:
> Hallo,
>
> den unten stehenden Code habe ich aus dem Kochbuch von Hanser, Seite
> 648.
>
> Den soll ich laut Buch in
> typo3conf/ext/musicdb/pi1/class.tx_meineextension_pi1.php schreiben und
> zwar in die main() -Methode. Aber wo genau. danke.
>
> Die sieht bisher so aus:
> /////////////////////////////////////////////////////////////////////////
>
> /**
> * Main method of your PlugIn
> *
> * @param string $content: The content of the PlugIn
> * @param array $conf: The PlugIn Configuration
> * @return The content that should be displayed on the website
> */
> function main($content,$conf) {
> switch((string)$conf['CMD']) {
>
> case 'singleView':
> list($t) = explode(':',$this->cObj->currentRecord);
> $this->internal['currentTable']=$t;
> $this->internal['currentRow']=$this->cObj->data;
> return $this->pi_wrapInBaseClass($this->singleView($content,$conf));
> break;
> default:
> if (strstr($this->cObj->currentRecord,'tt_content')) {
> $conf['pidList'] = $this->cObj->data['pages'];
> $conf['recursive'] = $this->cObj->data['recursive'];
> }
> return $this->pi_wrapInBaseClass($this->listView($content,$conf));
>
> break;
>
> }
> }
>
> /////////////////////////////////////////////////////////////////
>
> und jetzt der code aus dem Buch.
>
> //////////////////////////////////////////////////////////////////////
>
> # Template-Datei einlesen
> $this->templateCode = $this->cObj->fileResource($conf['templateFile']);
> # Bereich im Template auswählen
> $template['total'] =
> $this->cObj->getSubpart($this->templateCode,'###SINGLEVIEW###');
> # Inhalt für die einzelnen Marker in das Marker-Array schreiben -
> # dabei für die Field-Werte die entsprechende Übersetzung mittels
> # pi_getLL() holen.
> $markerArray['###FIELD1###'] = $this->pi_getLL('FIELD1');
> $markerArray['###VALUE1###'] = 'VALUE1';
> $markerArray['###FIELD2###'] = $this->pi_getLL('FIELD2');
> $markerArray['###VALUE2###'] = 'VALUE2';
> # Nun werden alle Marker im Template ersetzt und das ersetzte Template
> # in die Ausgabe-Variable $content geschrieben
> $content = $this->cObj->substituteMarkerArrayCached($template['total'],
> $markerArray);
> # Die Ausgabe-Variable wird schließlich zurückgegeben.
> return $content;
>
> # Template-Datei einlesen
> $this->templateCode = $this->cObj->fileResource($conf['templateFile']);
> # Bereich im Template auswählen
> $template['total'] =
> $this->cObj->getSubpart($this->templateCode,'###LISTVIEW###');
> # Subpart auswählen
> $template['item'] = $this->cObj->getSubpart($template['total'],
> '###ITEM###');
> # Ergebnisliste zusammenstellen
> while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
> # Marker-Array fullen
> $markerArray['###VALUE1###'] = $row['value1'];
> $markerArray['###VALUE2###'] = $row['value2'];
> # Marker ersetzen
> $content_item .=
> $this->cObj->substituteMarkerArrayCached($template['item'],
> $markerArray);
> }
> # Subpart ersetzen
> $subpartArray['###CONTENT###'] = $content_item;
> $content = $tis->cObj->substituteMarkerArrayCached($template['total'],
> array(), $subpartArray);
> # Die Ausgabe-Variable wird schließlich zurückgegeben
> return $content;
>
> /////////////////////////////////////////////////////////////////////////
>
>
> danke
> thomas
>
>
More information about the TYPO3-german
mailing list