Am Sun, 15 Mar 2009 06:59:30 +0100 schrieb Ronald Steiner:

> Hallo Liste,
> 
> ich habe für meinen Frontend-Plugin im BE eine FlexForm Eingabe. Wenn
> ich  eine Sprach-Kopie anlege hätte ich gerne, dass eines der FlexForm
> Felder nicht übersetzbar ist, also nur in der default Sprache existiert
> und angezeigt wird.
> 
> Gibt es da einen Weg?

eine BE-Eingabe für ein FE-Plugin?
was bitte machst du genau?
Datensätze anzeigen oder Plugins konfigurieren?

egal wie wirst du wohl in der Programmierung der FE-Ausgabe bei einem 
bestimmten Feld immer auf den Datensatz der Ursprungssprache 
zurückgreifen müssen. Dass dieses Feld in allen Sprachen existiert wirst 
du wohl nicht vermeiden können, immerhin handelt es sich immer um die 
gleiche Tabelle mit gleichartigen Datensätzen (egal ob selbst erstellte 
oder tt_content)

Damit sind wir schon bei der Programmierung.

mit eigener Tabelle/ Datensätzen:
bei der Definition sollte Sprachunterstützung vorgesehen sein und damit 
gibt es eine Konstruktion (Felder) wie man von einem übersetzen Datensatz 
(sys_language_uid != 0) auf den Default-Datensatz kommt: Das Feld lautet 
'l18n_parent' dort steht die UId des Datensatzes in der Default-Sprache 
drin.
Wenn es der Datensatz in Default-Sprache ist ('sys_language_uid'==0) 
steht dort 0 drin.
Außerdem gibt es noch den Fall 'Gültig für alle Sprachen' mit 
sys_language_uid == -1.

in deinem Plugin musst du halt einen zweiten Datensatz holen um an das 
eine Feld des Default-Datensatzes zu kommen wenn du eine 'Übersetzung' 
ausgibst.
Das Feld existiert (im BE) dann zwar auch in den übersetzten Datensätzen. 
Alle Eingaben darin werden aber ignoriert.


Wenn du nur dein Plugin konfigurierst sind deine Datensätze in der 
Tabelle tt_content. Das aktuelle Content-Element hast du als $this->cObj-
>data verfügbar. Dort findest du auch die UId und über 'l18n_parent' auch 
die UId des default-Datensatzes in tt_content. 

Und jetzt wird es kompliziert: 
Die Eingaben in den Flexformfeldern sind nämlich nicht in einfachen 
Tabellenfeldern gespeichert, sondern serialized im Feld 'pi_flexform'. 
Entweder musst du es selber zerlegen (unserialize()) oder du kannst die 
existerenden Funktionen dafür benutzen. Ob und wie das geht weiß ich 
allerdings nicht. Normalerweise wird halt nur mit dem aktiven tt_content-
Datensatz gearbeitet (bzw. mit der Kopie in $this->cObj->data) und ich 
vermute, dass die Std-Flexform-Funktionen ($this->pi_initPIflexform() und 
$this->pi_getFFvalue(...)) da nicht flexibel sind.


bernd
-- 
http://www.pi-phi.de/t3v4/cheatsheet.html
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.netfielders.de
http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an