Erste Extension fertig – Singleansicht Sprachproblem gelößt!!!

comments track it back

Ich habe endlich meine erste anständige Extension fertiggestellt. Dabei musste ich die Community nicht einmal mit einer sinnlosen Frage nerven! ;)

Ziel der Erweiterung war es eine gute Lösung für die Publizierung von Last Minutes & Arrangements für eine Hotelkette zu finden.
Bisher habe ich dafür die Extension „tt_news“ und das einfache Content-Element eingesetzt.

Jetzt gibt es aber eine Buchungsengine an die passende Buchungscodes übergeben werden müssen. Da natürlich kein passendes Feld vorhanden war, musste eine zugeschnittene Extension her!

An sich habe ich mich an den grundlegenden Aufbau von „tt_news“ gehalten. Es gibt also eine „Latest“-Ansicht für die Last-Minute Angebote, eine „List“-Ansicht für die Last-Minutes & Arrangements und natürlich eine Singleansicht für das komplette Angebot.

Ich habe nun die Möglichkeit verschiedene Hotels anzulegen und passend dazu Last-Minute oder Arrangement Angebote anzulegen.

ext01.png
ext02.png

Später kann ich dann für das Frontend auswählen welches Hotel angezeigt werden soll, welche Angebote angezeigt werden sollen und in welcher Reihenfolge wie viele Angebote angezeigt werden sollen.

Das ganze hat auch wunderbar funktioniert. Alles läuft und die Angebote werden korrekt an die Buchungsengine geschickt.

Nun gab es noch ein Problem – Die Sprachumstellung innerhalb eines Angebots!

Ich habe also mal einen Blick auf „tt_news“ geworfen. Wenn ich dort innerhalb einer News die Sprache umstelle, sofern ich die Parameter mit übergebe, ist die Seite zwar in meiner anderen Sprache sichtbar aber die News ist immer noch z.B. Deutsch.
Also habe ich mal nachgeforscht. Im typo3.net-Forum und in der Mailinglist wurde immer nur das „no news-id given“ Problem angesprochen bzw. gelöst.

Also habe ich mich selbst umgeschaut und zusammen mit Walter eine Lösung gefunden.

Wenn ich ein Angebot lokalisiere, steht das ja in Relation zum Original Angebot. Also wird das ganze ja definitiv in die Datenbank geschrieben.

Das Feld „l18n_parent“ ist der Schlüssel. Dort steht immer die ID des „Eltern“-Elements drin.
Also sind wir hergegangen und haben einfach anhand der aktuellen Seitensprache eine Datenbankabfrage gestartet die uns immer die passenden News anzeigt.

Bevor ich jetzt anfange ausschweifend zu erklären hier schnell ein Beispiel-Script:

Standard Script zur Abfrage des Datensatzes:

$record=$this->pi_getRecord(’tx_extension’,$this->piVars['showUid']);

Erweitertes Script mit Sprachabfrage:

if ($GLOBALS['TSFE']->sys_language_uid == 0)
$offerLangID = $this->piVars['showUid'];
else {
$query = ‘SELECT uid FROM tx_extension_db WHERE sys_language_uid=’.$GLOBALS['TSFE']->sys_language_uid.’ AND l18n_parent=’.$this->piVars['showUid'].’ AND hidden=0 AND deleted=0 LIMIT 1′;
$res = mysql(TYPO3_db,$query);
$row = mysql_fetch_assoc($res);
if ($row['uid'])
$offerLangID = $row['uid'];
else
$offerLangID = $this->piVars['showUid'];
}

$record=$this->pi_getRecord(’tx_extension’,$offerLangID);

Wenn ich jetzt innerhalb eines Angebots die Sprache umstelle wird mir auch das sprachlich passende Angebot angezeigt. Um in Google Doppelcontent zu vermeiden, sollte man evtl. noch die Links für die Sprachumstellung innerhalb der Singleseite mit einem „nofollow“-Attribut versehen, da sich in der URL die ID nicht ändert.

Da die Extension ein Kundenprojekt war bzw. ist, kann ich die leider nicht ohne weiteres in das TER laden. Ich werde mich aber nun ran machen und eine abgewandelte Version schreiben, die ich dann auch für die Allgemeinheit ins das TER hochlade. :)

Noch keine Kommentare!

Schreibe einen Kommentar

What I'm Doing...

Meta