steffenk schrieb
Also bleibt nichts anderes übrig als die Tabellen einzeln abzufragen und den Overlay zu nutzen.
Das kann doch nicht sein? Ich habe eigentlich 6 oder 7 Kategorietabellen (hier der einfachheit nur eine Kategorie) - das wären dann ja extrem viele Queries?
Geht das ohne Join eventuell einfacher? Will den Code nicht unnötig aufblähen...
Ehrlich gesagt verstehe ich sowieso nicht warum man mit enableFields nicht auf Lokalisierung und Workspace eingehen kann (anderes Thema)...
Grüße, Alex
Die Sache ist einfach komplex.
Workspaces sind noch mal ein anderes Thema, aber auch hier gibt es overlays. enableFields() berücksichtigt die schon, aber auch das ist nicht "fertig"
Francois versucht diesen Missstand zu beseitigen, stöhnt aber aufgrund der Komplexität, es müssen ja alle Joins aufgedröselt werden und entsprechend der Language die entsprechenden Felder, die in TCA definiert sind gegen die Originalfelder ausgetauscht werden.
Wenn Du eine Idee hast oder Francois Suter unterstützen möchtest. sag ihm einfach Bescheid, sein Kontakt findest Du z.B. bei typo3.org unter sponsored projects
steffenk schrieb
Wenn Du eine Idee hast oder Francois Suter unterstützen möchtest...
Dazu muss ich erst Mal für mein eigenes Problem eine Idee haben 🙂
Mach einen Workarround: eine Funktion der Du die uid der Kategorie übergibst und die Dir den lokalisierten Titel zurückgibt, dann kannst Du auf den Join verzichten.
steffenk schrieb
Mach einen Workarround: eine Funktion der Du die uid der Kategorie übergibst und die Dir den lokalisierten Titel zurückgibt, dann kannst Du auf den Join verzichten.
Ja, klingt gut - so werde ichs machen, dank dir!
Habe das jetzt umgesetzt - X-Zeilen 🙁
ist doch mehr oder weniger c&p, oder?
soviel kanns doch nicht geben, aber klar, ist umständlicher, hat mehr SQL-Queries und auf Dauer keine schöne Lösung.
Habe nur ein ellenlanges SQL Query und fülle dann ein Array $row_category mit uid, pid und title und lasse dann dieses Array wieder überschreiben.
Und da ich mehrere Kategorien habe, zieht sich das etwas...
Aber du hast Recht - es funktioniert 😃
Also ein Join sollte eigentlich so funktionieren:.
$this->andWhere('uid' => '666');
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
'*,V.title VT,V.uid VU,S.title ST,S.uid SU,S1.uid S1U, S1.title S1T, S2.uid S2U, S2.title S2T',
'pages WA INNER JOIN pages V ON WA.pid=V.uid INNER JOIN pages S ON V.pid=S.uid INNER JOIN pages S1 ON S.pid=S1.uid INNER JOIN pages S2 ON S1.pid=S2.uid',
'S2.uid='.$GLOBALS['TYPO3_DB']->cleanIntList($parentUid).' AND WA.deleted=0 AND WA.hidden=0'.(count($this->andWhere)?' AND '.implode(' AND ',$this->andWhere):'').(count($this->orWhere)?' AND ('.implode(' OR ',$this->orWhere).')':''),
'S1.uid','WA.pid','');
[/quote]
Tetramatrix schrieb
Also ein Join sollte eigentlich so funktionieren:.
ok, und wo ist die lokalisierung bei dir?
Also, ich denke mal, dass die Lokalisierungs-Tabellen auch über das Parent-Child-Modell verfügen. Mit diesem join, den ich Dir genannt habe, kann man über 3-Unterkategorien eine Tabelle mit Parent-Child-Modell abfragen (Orignalsprache + Lokalisierung gibt bei meir 2 Unterkategorien). Da wird dann sicherlich auch Deine Lokalisierung dabei sein.
pages ist die einzige Stelle bei TYPO3 wo die Übersetzungen in einer anderen Tabelle liegen, daher wird Deine genannte Query keine Übersetzung liefern.
In anderen Tabellen wird man tatsächlich unter Einbeziehung der Language-Felder einen Join hinbekommen.
Francois Suter versucht eine Lösung dafür zu finden und hat eine Testextension geschrieben
http://www.sk-typo3.de/stuff/T3X_overlays-0_0_0-z-200809161259.t3x