Zum Inhalt springen

Mehrstufige Ausgabe von eigener Extension

Erstellt am 4. Mai 2006 · 20 Antworten · letzte Antwort am 1. Juni 2006 · Seite 2 von 2

Tags: TYPO3 4, Frage

resta ·

Ich versuch mal anhand der letzten Posts eine Lösung zu erarbeiten.
Wenn ich es hinbekomme werde ich die Lösung vorstellen.
Das mit dem Code-Feld würde mich auch interessieren...

crimson ·

Hallo resta,

ich hatte Dir ja schon in dem anderen Forum was dazu gesagt. Das code-Feld ist, soweit ich das sehe, ein Relikt vergangener Versionen und den Wert daraus kannst Du in Deiner Klasse mit
$this->cObj->data['select_key']
abrufen. Wenn ich das richtig versteht sollte es aber nicht mehr benutzt werden. Sauberer wäre ein eigenes Contentfeld mit einer Auswahloption z.B. so:

ext_tables.php

"tx_meineExt_ExtAuslebung" => Array (		
		"exclude" => 1,		
		"label" => "LLL:EXT:meineExt/locallang_db.php:tt_content.tx_meineExt_ExtAuslebung",		
	"config" => Array (
		"type" => "select",
		"items" => Array (
			Array("LLL:EXT:meineExt/locallang_db.php:tt_content.tx_meineExt_ExtAuslebung_options.I.1", "auslebung1"),
			Array("LLL:EXT:meineExt/locallang_db.php:tt_content.tx_meineExt_ExtAuslebung_options.I.2", "auslebung2"),
				),
		)
	),

class.meineExt_pi1.php

switch($this->cObj->data['tx_meineExt_ExtAuslebung']){
	case 'auslebung1':
		blabla;
	break;
	case 'auslebung2':
		blabla2;
	break;
}

Ist das verständlich?

Fuzzy ·

Okay, dann versuche ich´s nochmal Typo3-konform.

(Danke für den Hinweis, wieder was gelernt 🙂 Okay, bin ja auch erst seit ein paar Tagen dabei :o )

Also lasse dir die Liste als Link anzeigen und übergebe die Kundenid

$temp_conf = $this->typolink_conf;
$temp_conf["additionalParams"] .= "&tx_EXTNAME_pi1[kundenid]=" . $row["kundenid"] ;
$temp_conf["useCacheHash"] = $this->allowCaching;
$temp_conf["no_cache"] = !$this->allowCaching;
$the_link = $this->local_cObj->typolink($row["kundenname"], $temp_conf);

$content .= $the_link;

und vorher überprüfst du, ob kundenid übergeben wurde

if(isset($this->piVars["kundenid"]))
{
// dann liste von produkten
}
else
{
// dann liste der Kunden
}

wenn das der Fall ist, gibst du halt dessen produkte aus, ansonsten die Kundenliste...

So besser? [/quote]

crimson ·

Hallo Tetramatrix,

ich gebe zu, dass ich mich mit Flexforms noch nicht außeinander gesetzt habe, worin liegt denn der Vorteil zu meiner Lösung?

Viele Grüße
der André

Stoneage ·

1) Du darfst nur noch ein Datenbank-Feld in der tt_content Tabelle speichern.
2) Du darfst die TCA-Einstellung in einer XML-Datei abspeichern.
3) Im BE darfst Du die Felder direkt editieren.

crimson ·
Tetramatrix schrieb

1) Du darfst nur noch ein Datenbank-Feld in der tt_content Tabelle speichern.
Wer sagt das? Ich darf oder ich brauche noch ein Feld
2) Du darfst die TCA-Einstellung in einer XML-Datei abspeichern.
Da ich kein Fan von XML bin, will ich dass ja gar nicht 😉
3) Im BE darfst Du die Felder direkt editieren.
Das klingt recht attraktiv, wenn ich auch in diesem Fall die Recordslösung ausgesprochen gut finde. Ich muss mich wohl mal damit aueinandersetzen

steffenk ·

Ich will es mal etwas positiver formulieren:

Mit Flexforms müssen keine neuen Felder in tt_content angelegt werden, alle Werte werden serialisiert in einem Feld abgespeichert.

Flexforms lassen sich so beliebig durch editieren der xml-Datei erweitern, ohne das man weitere Eingriffe braucht.

In Flexforms hat man alle Typen von Eingabefeldern zur Verfügung, man kann bei vielen Parametern mehrere Tabs anlegen.

Alle modernen Extensions benutzen Flexforms (schaut Euch mal tt_news an, ist auch Flexform)

Flexforms sind der einfachste und flexibelste Weg um Usereingaben der Extension zu übergeben.

resta ·

Hallo,
ist zwar schon etwas her aber ich habe es jetzt geschafft eine kategorie-liste zu erstellen welche die richtigen piVars übergibt.

Was ich leider noch nicht hinbekomme ist die pi_exec_query anzupassen um die Ausgabe einzuschränken:

// Make listing query, pass query to SQL database:
   if ($this->piVars['category']){
   #  $addWhere = " AND category = ".$this->piVars['category'];
       $addWhere = "AND tx_portfolio_referenz.category LIKE '".$this->piVars["category"]."'";
       $res = $this->pi_exec_query('tx_portfolio_referenz',0,$addWhere);
   } else {
       $res = $this->pi_exec_query('tx_portfolio_referenz');
   }

ich bekomme nur eine Fehlermeldung wenn ich etwas auswähle.
Weiß jemand Rat?

Stoneage ·

Falsch:

$addWhere = "AND tx_portfolio_referenz.category LIKE..."

Richtig:

$addWhere = " AND tx_portfolio_referenz.category LIKE..."