[TYPO3-german] Extbase 6.2.4 / Multilanguage Problem

Stefan Padberg post at bergische-webschmiede.de
Fri Sep 19 18:40:55 CEST 2014


Hallo,

die localizedUid bekommt man recht einfach heraus.

Im model einfach die function einbauen:

	/**
	 * Returns the localized uid
	 *
	 * @return string $_localizedUid
	 */
	public function getLocalizedUid() {
		return $this->_localizedUid;
	}

Aber wenn ich mit der localizedUid versuche, die lokalisierte Version zu 
ermitteln, bekomme ich "automatisch" die nicht-lokalisierte Version zurück.

So ein Mist! Keiner eine Idee? Muss ich mir doch eine eigene SQL-Abfrage 
schnitzen...

Stefan

Am 19.09.2014 um 18:12 schrieb Stefan Padberg:
> Hallo,
>
> ich habe das weiter untersucht und die Datenbank-Einträge verfolgt. Es
> ist irgendwie ein konzeptionelles Problem bei Typo3 oder Extbase,
> scheint mir.
>
> 1 Produkt:
> product( uid:1 )
>
> 1 lokalisiertes Produkt:
> product( uid:11, sys_language_uid:1, i10n_parent:1 )
>
> 2 Produktversionen:
> version( uid:1, product:1, name:'product 1, version A' )
> version( uid:2, product:1, name:'product 1, version B' )
>
> 2 lokalisierte Produktversionen:
> version( uid:11, product:11, sys_language_uid:1, i10n_parent:1,
> name:'Produkt 1, Variante A' )
> version( uid:12, product:11, sys_language_uid:1, i10n_parent:2,
> name:'Produkt 1, Varainte B' )
>
> Insgesamt haben wir jetzt also 4 Versionsdatensätze. Wenn die
> sys_language_uid=1 ist, holt sich Extbase die 2 nicht-lokalisierten
> Versions-Uids über die nicht-lokalisierte Produkt-Uid, schaut dann nach,
> welche lokalisierten Versions-Uid zutreffen und gibt dann automatisch
> den lokalisierten Produktversionsnamen aus.
>
> Warum funktioniert das bei den Bildern nicht?
>
> Jede Version habe ein Bild:
> sys_file_reference( uid:201, uid_foreign:1, tablenames:'version',
> sys_langauge_uid:0; i10n_parent:0 )
> sys_file_reference( uid:211, uid_foreign:2, tablenames:'version',
> sys_langauge_uid:0; i10n_parent:0 )
> sys_file_reference( uid:221, uid_foreign:11, tablenames:'version',
> sys_langauge_uid:1; i10n_parent:0 )
> sys_file_reference( uid:231, uid_foreign:12, tablenames:'version',
> sys_langauge_uid:1; i10n_parent:0 )
>
> Wie man sieht, ist i10n_parent bei den referenzierten Bildern nicht
> gesetzt. So hat Extbase keine Chance, das lokalisierte Bild zu finden.
> Es sucht ja mit den nicht-lokalisierten Versions-Uids die
> nicht-lokalisierten Bild-Uids und findet dann keine lokalisierten
> Bild-Uids.
>
> Anders als bei den Produktversionen, die ich über den Typo3-inhärenten
> Mechanismus lokalisieren kann, geht das bei den referenzierten Bildern
> nicht. Es gibt keine lokalisierten Filereferenzen.
>
> Man müsste mit den lokalisierten Versions-Uids die passenden
> Bildreferenzen zusammensuchen. Das müsste in Extbase irgendwie
> implementiert werden.
>
> Für mich stellt sich jetzt die Frage:
> Wie bekomme ich jetzt im Controller die lokalisierte Versions-Uid raus?
> In Fluid steht sie im Debugger:
>
> version =>
>      uid => 1
>      sys_language_uid => 1
>      _localizedUid => 11
>
> Mit $version->getUid() bekomme ich immer die nicht-lokalisierte Uid.
>
> Weiß jemand etwas hierzu?
>
>
>
> Ich kann mir natürlich eine eigene SQL-Abfrage in das
> Versions-Repository schreiben. Dann hab ichs - eventuell.
>
> Oder ich baue meine eigene Bildreferenz in die Extension und lege die
> über die sys_file_reference, um das sauber abzuwickeln.
>
> Ich hoffe aber, es gibt in Extbase eine einfache Lösung für dieses
> Standardproblem, die ich Extbase-Dummy bloß noch nicht kenne.
>
> Beste Grüße
> Stefan
>
>
> Am 19.09.2014 um 11:05 schrieb Stefan Padberg:
>>
>> Hallo,
>>
>> ich habe hier einen merkwürdigen Effekt:
>>
>> Eine eigene Extension verwaltet Produkte. Die Produkte sind mehrsprachig
>> hinterlegt, funktioniert alles tippi-toppi.
>>
>> Manche Produkte haben Varianten. Die Varianten sind in einer eigenen
>> Tabelle erfasst und mittels n:1-Relation an die Produkttabelle
>> gekoppelt. Die Varianten sind auch lokalisert worden, und auch das
>> funktioniert tippi-toppi...
>>
>>
>> ...bis auf die BILDER! Die beigefügten Bilder sind zwar korrekt
>> lokalisiert (eigene Datanstz-ID), aber werden nicht gezogen. Es wird
>> immer der Originalbild-Datensatz gezogen, mitsamt Titel und Beschreibung
>> in Originalsprache.
>>
>> Im Fluid-Template spreche ich die Bilder so an:
>>
>> {products.0.versions.0.images.0}
>> (Ich spar mir jetzt die übliche for-each-Schleife; obiges bedeutet:
>> 1. Bild der 1. Variante des 1.Produkts)
>>
>> bzw. Bild-Titelfeld
>> {products.0.versions.0.images.0.originalResource.title}
>>
>> In der Datenbank sind in der sys_file_reference die entsprechenden
>> Bilddatensätze nicht gegeneinander lokalisiert. Ist das das Problem?
>> Eigentlich sollte es dort egal sein, weil die Lokalisierung ja über die
>> Produktvarianten erfolgt. Eigentlich würde ich erwarten, wenn die
>> lokalisierte Produktvariante gezogen wird, dass dann auch die
>> lokalisierten Bilddatensätze gezogen werden. Woher weiß Extbase
>> überhaupt von den Originalbilddatensätzen? Dazu müsste es ja über die
>> Originalvariantendatensätze gehen. Es werden aber korrekt die
>> lokalisierten Varianten gerendert.
>>
>> Ist das ein Bug?
>>
>> Beste Grüße
>> Stefan
>>
>>
>>
>>
>>
>>
>
>


-- 
Bergische Webschmiede
Typo3 Dienstleistungen
:: Dipl.-Ing. Stefan Padberg
:: www.bergische-webschmiede.de

---
Diese E-Mail ist frei von Viren und Malware, denn der avast! Antivirus Schutz ist aktiv.
http://www.avast.com



More information about the TYPO3-german mailing list