domain.dk soll auf domain.de/cms/..?changelang=2 zugreifen

Gesperrt
asycs
Beiträge: 64
Registriert: Do 2. Feb 2006, 12:13
Kontaktdaten:

domain.dk soll auf domain.de/cms/..?changelang=2 zugreifen

Beitrag von asycs » Di 31. Jul 2007, 10:36

Ich versuch mal mein aktuelles Problem einigermaßen zu beschreiben:

Inhalte der .de sind unter domain.de/cms aufrufbar.

domain.dk ordner ist bis auf temp. htaccess weiterleitung leer.


ich möchte (sofern realisierbar) bei aufruf der domain.dk auf domain.de/cms/front_content.php?changelang=x weiterleiten

ABER

in der adresszeile und in den links soll natürlich domain.dk stehen?

Bin mit
http://contenido.org/forum/viewtopic.php?p=68877#68877

nicht bedeutend weiter gekommen.
Leider absolut nicht mein Gebiet.
:cry:

Wäre über schnelle Hilfestellung dankbar.

xmurrix
Beiträge: 3147
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Beitrag von xmurrix » Di 31. Jul 2007, 15:20

Hallo,

die Lösung unter Thema http://contenido.org/forum/viewtopic.php?p=68877#68877 ist zum Setzen des korrekten Wertes für den base Tag, was bei Multidomains auf eine Contenidoinstallation und ein Mandant wichtig ist.

Du möchtest eine bestimmte Sprache abhängig von der Domain machen, das lässt sich eigentlich auch mit Mandanteneinstellungen und einem kleinen Hack in der front_content.php machen. Dafür kannst du z. B. folgende Variable in Mandanteneinstellungen anlegen:

Code: Alles auswählen

type: client 
name: language4www.domain.dk
value: 2
Der Name ist einfach zusammengstellter String aus 'language4' und dem eigentlichen Domainnamen (z. B. www.domain.dk). Value enthält die id der Sprache.

In der front_content.php kannst du ab der Zeile 129 folgendes hinzufügen:

Code: Alles auswählen

...
// Ab Zeile 129
if (isset($lang) && !is_numeric($lang)) {
	unset ($lang);
}

if (!is_object($oClient)) {
    cInclude('classes', 'contenido/class.client.php'); 
    $oClient = new cApiClient($client); 
}
$domainlang = $oClient->getProperty('client', 'language4'.$_SERVER['HTTP_HOST']);
if (is_numeric($domainlang) && $domainlang > 0 && $domainlang != $lang) {
    $lang = $domainlang;
    $sess->register("lang");
    unset($domainlang);
}

// Change client
if (isset($changeclient)){
...
Der Code sollte dafür sorgen, dass die Sprache auf die in den Mandanteneinstellungen festgelegten Sprache für die aktuelle Domain gesetzt wird, ohne ein Redirect mit changelang=id.

Allerdings habe ich den Code nicht auf Herz und Nieren getestet und kann auch nicht sicher sagen, ob es sich auf andere Bereiche negativ auswirkt. Daher würde ich es richtig durchtesten (auch im Backend) bevor es live geht...

Gruß
xmurrix

asycs
Beiträge: 64
Registriert: Do 2. Feb 2006, 12:13
Kontaktdaten:

Beitrag von asycs » Mi 5. Sep 2007, 14:36

ok.

funktioniert soweit, aber nur im frontent.


wenn ich einen artikel ändern möchte
wird nach auswahl der sprache zwar die richtige verzeichnisstruktur der jeweiligen sprache angezeigt,

wenn ich aber einen artikel ändern möchte, wird dieser nur in deutsch angezeigt.

xmurrix
Beiträge: 3147
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Beitrag von xmurrix » Mi 5. Sep 2007, 20:12

Hallo,

es gibt noch 2 weitere Versionen der front_content.php, diese sollten auch angepasst werden (oder auch nicht).
  • /contenido/external/frontend/front_content.php:
    Verwendung als Vorlage, beim Anlegen eines neuen Mandanten
  • /contenido/external/backendedit/front_content.php:
    Wird im Backend zum Editieren und Preview der Seiten verwendet.
Wenn die Domain des Backends nicht denen der Clients entspricht, oder im Backend dann die Sprache nicht nach der Domain gesetzt werden soll, musst du den Code noch anpassen (auch in /contenido/external/backendedit/front_content.php). Du schreibst, dass der Artikel immer in Deutsch gezeigt wird. Kann es sein dass das Backend dann die Domain des Backend auf '.de' endet?

Vielleicht hilft es, wenn du die eine if-Anweisung folgendermaßen Erweiterst:

Code: Alles auswählen

if (is_numeric($domainlang) && $domainlang > 0 && $domainlang != $lang && !$contenido) {
Dann sollte die Sprache nicht nach der in den Client-Settings definierten Werten gesetzt werden, wenn die front_content.php im Backend läuft.

Gruß
xmurrix

asycs
Beiträge: 64
Registriert: Do 2. Feb 2006, 12:13
Kontaktdaten:

Beitrag von asycs » Di 11. Sep 2007, 11:07

Habe noch folgendes Problem, dass erst nach dem zweiten Aufruf der Länderdomain die Sprache geändert wird.

Beim ersten Aufruf gibt es noch kein Cookie für die .dk Domain bzw. wird erst geschrieben.
Wenn die Seite nun aktualisiert wird oder die Domain direkt aufgerufen wird, dann funktioniert erst die Umschaltung der Sprache.


1) keine Cookies (= neuer Besucher)
2) .de Domain wird aufgerufen (-> Inhalt deutsch)
3) .dk wird aufgerufen (-> Inhalt deutsch -> .dk Cookie wird geschrieben)
4) .dk -erneut- aufrufen (-> Inhalt dänisch)

xmurrix
Beiträge: 3147
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Beitrag von xmurrix » Di 11. Sep 2007, 23:47

Habe nun die hier im Thread beschriebene Vorgehensweise in eine Contenido-Installation (4.6.15) eingebaut und bei mir funzt es wunderbar.

Im Frontend wird die Sprache je nach HTTP_HOST gesetzt und dementsprechend werden auch die Inhalte korrekt angezeigt. Im Backend können die Inhalte der Seite über die im Backend gewählte Sprache bearbeitet werden.

Am Cookie oder der Session kann es nicht liegen. Der Code-Snippet hier im Beispiel überschreibt die Sprache, egal ob die Sprache von der Session kommt oder nicht. Beim ersten Aufruf der Seite wird die korrekte Sprache gesetzt.

Das Problem wird wohl woanders sein. Entweder beeinflussen andere Änderungen an Contenido-Sourcen die korrekte Funktionalität oder die Konfiguration des HTTP-Servers. Vielleicht macht der HTTP-Server beim ersten Request von *.dk ein internes Mapping auf die *.de (falls sowas möglich ist) und in der Variable $_SERVER['HTTP_HOST'] steht 'www.domain.de' drin, 'www.domain.dk' erst beim zweiten Request...

Gruß
xmurrix

asycs
Beiträge: 64
Registriert: Do 2. Feb 2006, 12:13
Kontaktdaten:

Beitrag von asycs » Mi 12. Sep 2007, 15:15

nach der neuinstallation läuft nun alles. im firefox jedenfalls. ie feedback am freitag.

vielen dank an xmurrix und stese.


einer spinnt ..
wie immer!


irgendwie scheinen .co.uk domains ein fehler zu verursachen.
muss ich mir ansehen.

asycs
Beiträge: 64
Registriert: Do 2. Feb 2006, 12:13
Kontaktdaten:

Beitrag von asycs » Fr 28. Sep 2007, 08:28

funktioniert nun alles soweit.
ca 10 sprachen, 10 länderdomains unter einem mandanten und mr.
ne feine sache, vielen dank nochmal.

habe nun gestern eine .fi domain zugeschalten,
man sollte meinen die funktioniert genauso wie zb. die .dk Domain.

die .fi domain bleibt aber an der .htaccess hängen.
403

sobald ich die htaccess entferne werden inhalte angezeigt.

kann ich momentan nicht nachvollziehen, wenn jemand eine idee hat, hab ich eher feierabend ;0)

Gesperrt