[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