Zum Inhalt springen

2 Designvorlage in main function ansprechen

Erstellt am 8. August 2008 · 6 Antworten · letzte Antwort am 12. August 2008

Tags: Frage

kuan yin ·

kann ich in meine main funktion 2 templates ansprechen? #paralyzed#
so was wie
$tmpl1 = $this->cObj->fileResource($conf["templateFile"]);
$tmpl2 = $this->cObj->fileResource($conf["templateFile2"]);
wobei templateFile1 für die Seite mit Id 5 ist, und templateFile2 für die Seite mit Id 12,
in jeder Typoscript habe ich
auf der erste Seite:

plugin.user_extensionname_pi1{

#seitennummern wo die Einträge eingefuegt werden
  erstepageId = 18
 zweitepageId = 19
  
#der pfad zur design
templateFile = fileadmin/templates/template1/vorlage1.html
  
}

und auf der zweite Seite das selbe aber mit

templateFile2 = fileadmin/templates/template1/vorlage2.html

Vielen Dank für jeder Antwort.
Gruß

einpraegsam.​net ·

Klar ist das machbar, aber ich glaube, dass du zu kompliziert denkst. Setze einfach über TS auf der einen Seite template1.html und auf der anderen Seite template2.html

kuan yin ·

Hallo,

ja, natürlich.

Mitfreundlchen Grüßen,

Chi Hoang

Danke für deine Antwort,
ich habe meine Frage falsch gestellt. Ich wollte wissen , ob ich in main()Funktion zwei Rückgabe Werte haben kann:Für die Speicherung der Formular Eingabe und für die Ausgabe der Datenbank Elemente. etwa mit

$content = array($content1,$content2);
return $content;

oder ist es besser die Ausgabe in Setup zu machen?

kuan yin ·

Klar ist das machbar, aber ich glaube, dass du zu kompliziert denkst. Setze einfach über TS auf der einen Seite template1.html und auf der anderen Seite template2.html

Danke einpraegsam.
Wenn ich die 2 Templates gesetzt habe, wie kann ich dann in php class.user_extension_pi1.php sagen, dass es die zwei ausgeben soll?

kuan yin ·

Ich meinte den Typo3 template Setup. Kann ich über Typoscript Datensätze aus eine andere Tabelle(user_extension_main2) auslesen?

Ich habe versucht Inhalte auf beide Seiten über php auszugeben: Die Seite mit dem Eingabe Formular und die Seite, die die Datensätze aus der Tabelle ausgeben soll.

function main($content,$conf) {
$this->conf=$conf;
		$this->pi_setPiVarDefaults();
		$this->pi_loadLL();
		$this->pi_USER_INT_obj=1;
$content ='';	
$marker = array();
//Designvorlage für das Formular laden
$tmpl = $this->cObj->fileResource($conf["templateFile"]);

if ($postlist['senden']==1){
		//Formular eingabe in Datenbanktabelle speichern
		$content = $this->storeContent();
               //Datensätze ausgeben
                $content = $this->showContent();
		
	}
	else
	{
	//Eingabe Formular anzeigen	
         $marker["###DATEN###"] = $this->showformDaten();
  $content .= $this->cObj->substituteMarkerArrayCached($tmpl,$marker);
	}
return $content;
	
	}

jetzt will ich eine Datenbank abfrage machen, und die Datensätze auf der Seite mit Id 12 anzeigen, also

function showContent(){
...
if(!intval($PageId)) $PageId = $GLOBALS["TSFE"]->id;
		//Daten auslesen
		$erg = $GLOBALS["TYPO3_DB"]->exec_SELECTquery("*","user_extension_main2","deleted = 0 AND hidden = 0  AND pid='".$PageId."'" );
		while($row = $GLOBALS["TYPO3_DB"]->sql_fetch_assoc($erg)){
		
		//Platzhalter füllen
		$marker["###KONTAKTDATEN###"] = $row["nachname"]." ".$row["vorname"];
....
$content .= $this->cObj->substituteMarkerArrayCached($tmpl2,$marker);
}
return $content;
}

Ich habe dann zwei verschiedene Seite, die ich mit return $content ausgeben will. Die erste Seite mit Formular wird ausgegeben und das Formular funktionniert, alles wird in der Datenbank gespeichert.

Die zweite Seite zeigt keine Inhalte aus der Datenbanktabelle(nachname und Vorname wird nicht angezeigt).
wie kann ich das zum laufen bringen?