2 Mandanten mit gleichem Serverpfad und verlinkt

Gesperrt
Hagbard
Beiträge: 66
Registriert: Sa 18. Okt 2003, 23:52
Kontaktdaten:

2 Mandanten mit gleichem Serverpfad und verlinkt

Beitrag von Hagbard »

Hallo zusammen,

ich habe zwei Mandanten angelegt die beide den selben Serverpfad benutzen. Grund hierfür ist, daß ich zwei Sprachen verwalten möchte, wobei die zweite Sprache eine komplett andere Seitenstruktur hat. Darum der zweite Mandant. Damit ich auf die gleichen Daten im Uploadverzeichnis zugreifen kann, sind beide Serverpfade bei den Mandaten gleich.

Soweit so gut. Jetzt habe ich beide Sprachen (Mandanten) fertig und bis auf die Struktur und Text unterscheiden sich beide nicht (gleichen Temps, Module, etc.).

Aber wie kann ich nun von einem Mandanten auf den anderen verlinken? Irgendwie fehlt mir da die Einsicht. Wenn ich einfach den Pfad front_content.php?idcat=63&lang=5&client=5 oder ähnlich eingebe gelange ich zum Log-In-Screen.

Ich habe das Forum durchsucht, komme aber nicht weiter... Cookies? Falscher Pfad? Falsche Einstelltung des Mandanten?!

Nachtrag: Wie gesagt, beide Mandanten nutzen den gleichen Serverpfad und der erste Mandant läuft auch wunderbar im Frontend. Der zweite Mandant ist mit Content befüllt und wartet nur darauf angelinkt zu werden... Aber wie?!

Auch ist beim zweiten Mandanten (auf den ich ja verlinken möchte) keine Kategorie geschütz. Startartikel ist online.

Mal wieder vielen Dank für die Hilfe!
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Re: 2 Mandanten mit gleichem Serverpfad und verlinkt

Beitrag von Halchteranerin »

Hagbard hat geschrieben:Wenn ich einfach den Pfad front_content.php?idcat=63&lang=5&client=5 oder ähnlich eingebe gelange ich zum Log-In-Screen.
"oder so aehnlich" reicht nicht aus. :) Du brauchst entweder idcat und idart oder aber idcatart.
Hagbard
Beiträge: 66
Registriert: Sa 18. Okt 2003, 23:52
Kontaktdaten:

Beitrag von Hagbard »

Ahhhh, ok. Das kling einleuchtend :)

Nun habe ich von Mandant 1 direkt auf einen Artikel in Mandant 2 verlinkt (mit front_content.php?idcatart=120&lang=5&client=5). Aber ich komme trotzdem wieder auf den Log-In-Screen.

Muß ich in der Config.php etwas ändern? Also in der Config.php, die für beide Mandanten gilt, da beide im selben Server-Verzeichnis liegen?!

Bisher sieht die Config so aus:

Code: Alles auswählen

/* Required: language and client */
$load_lang = "1";
$load_client = "1";
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

a) Wenn der Startartikel online ist, brauchst Du die idcatart nicht angeben (d.h. Du kannst es zunächst ohne versuchen)
b) Zum Wechsel der Sprache und des Clients verwende changelang und changeclient, e.g.

Code: Alles auswählen

front_content.php?changelang=5&changeclient=5
Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

hmm, was ich mich frage ... wie ist das mit der config.php aus dem Mandantenverzeichnis? Denn wenn beide Mandanten dieselbe config.php benutzen, dann steht ja darin nur eine lang und ein client. Geht das ueberhaupt?
Hagbard
Beiträge: 66
Registriert: Sa 18. Okt 2003, 23:52
Kontaktdaten:

Beitrag von Hagbard »

Danke nochmals. Aber ich komme mit dem Pfad auch auf den Log-In-Screen... Was mache ich falsch?
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

hmm, was ich mich frage ... wie ist das mit der config.php aus dem Mandantenverzeichnis? Denn wenn beide Mandanten dieselbe config.php benutzen, dann steht ja darin nur eine lang und ein client. Geht das ueberhaupt?
Nein, die Angaben in der config.php sind nur die Parameter, die verwendet werden, wenn nichts angegeben ist.

Man könnte auch direkt lang und client angeben. Diese Angaben werden jedoch ignoriert, es werden die Angaben aus der config.php genommen. Dazu im Gegensatz "überschreiben" die changelang und changeclient-Angaben die Standardparameter.

@Hagbard: Wenn möglich, sende mal Deine Angaben für Contenido per PM.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Entschuldige, ich habe gerade sehr viel zu tun, daher die Verzögerung.

Ich habe mir die Seite angesehen. Leider kann ich z.Z. das Problem nur bestätigen.

Problematisch ist u.U. die Verwendung der Weiterleitung, aber diese ist bei dem englischen Mandanten gar nicht aktiviert (bei der Startseite).

Ich denke, dass da irgendwo noch ein Bug schlummert. Leider habe ich im Moment keine Zeit, mir das näher anzusehen. Wenn es also einen Moment Zeit hat, würde ich mich freuen, wenn Du mir bei Gelegenheit zur Erinnerung eine PM senden könntest - dann bitte ich auch um ein FTP-Account.

Bis dahin könntest Du versuchen, dem zweiten Mandanten ein eigenes Verzeichnis zu geben (testweise). Über die Einträge in der Mandanten-config.php könntest Du die Start-Mandanten-ID und Sprach-ID fest verdrahten.

Ich bin mir aber fast sicher, dass es auch dann nicht geht. Ansonsten solltest Du in der contenido\includes\config.php und in den Mandanteneinstellungen das www. noch ergänzen, wenn Du i.A. mit der www.-Domain (im Gegensatz zu domain.tld ohne www.) arbeitest (siehe Administration -> System).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Hagbard
Beiträge: 66
Registriert: Sa 18. Okt 2003, 23:52
Kontaktdaten:

Beitrag von Hagbard »

Wenn ich in der config.php den Client und die Lang fix eintrage geht alles wunderbar. Ich kann dann zwar nicht über die URL den Client und Lanmg wechseln, aber das macht nichts. Was sagt uns das jetzt?! :) Keine Ahnung.
Kann ich ne zweite config.php erstellen, auf die ich dann irgendwie verlinke um dann meinen zweiten Mandanten zu laden?! Es wird für die Seite eh ne Doorpage geben... Ich weiss, daß das nicht der eleganteste Weg ist, aber...
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Danke für die PM, ich sehe es mir die Tage an (max. Wochenende). Wir hatten schon mal ein Problem in der front_content.php gefunden, allerdings in meiner Erinnerung für V4.5.x.

Ich bin dran, es kostet nur seeeehr viel Zeit, das schrittweise auszutesten.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

So, es sollte jetzt gehen. Je nach Betrachtungsweise ist bzw. war das ein Bug oder ein Konfigurationsproblem.

In der front_content.php heißt es:

Code: Alles auswählen

...
        }
        
// Sprache wechseln
if (isset($changelang)) $lang = $changelang;

// Client wechseln
if (isset($changeclient)){
    $client = $changeclient;
[b]    unset($lang);[/b]
}

// Client initialisieren
if (!isset($client)) {
        $sess->register("client");
        //load_client defined in frontend/config.php
        $client = $load_client;
}

// Initialize language
if (!isset($lang)) {
    $sess->register("lang");
    //if is an entry load_lang in frontend/config.php use it,    else use the first language of this client
[b]    if(isset($load_lang)){[/b]
        //load_client is set in    frontend/config.php
        $lang = $load_lang;

    }else{
...
Zunächst wird - sofern angegeben - $lang = $changelang gesetzt.

Danach erfolgt ein Client-Wechsel anhang $changeclient; dies hat zur Folge, dass $lang nicht mehr gesetzt ist (unset $lang).

Im weiteren Verlauf wird nun - da ja load_lang durch die config.php gesetzt ist - $lang = $load_lang gesetzt. Bei Deinem Beispiel ergibt das $client = 5, $lang = 1. Da aber $lang = 1 nicht definiert ist (für $client 5), landet man im Nirwana-Land.

Die kurzfristige Lösung ist simpel:

Code: Alles auswählen

...
        }
       
// Client wechseln
if (isset($changeclient)){
    $client = $changeclient;
    unset($lang);
}

[b]// Sprache wechseln
if (isset($changelang)) $lang = $changelang;[/b]

// Client initialisieren
if (!isset($client)) {
        $sess->register("client");
        //load_client defined in frontend/config.php
        $client = $load_client;
}

// Initialize language
if (!isset($lang)) {
    $sess->register("lang");
    //if is an entry load_lang in frontend/config.php use it,    else use the first language of this client
    if(isset($load_lang)){
        //load_client is set in    frontend/config.php
        $lang = $load_lang;

    }else{
...
Die Zeile if (isset($changelang)) $lang = $changelang; liegt nun hinter dem Client-Wechsel (und dem darin enthaltenen unset ($lang)).

Damit ist die Sprache durch $changelang definiert und die Sprache wird nicht überschrieben.

Wird nun also sowohl changeclient als auch changelang angegeben (einmalig), wird der Client und die Sprache korrekt gewechselt.

Man könnte auch alternativ den Eintrag $load_lang in der Mandanten-config.php entfernen; das hat aber - wenn nicht noch andere - u.a. zur Folge, dass Contenido jedesmal erst in der DB nach der Sprache suchen muss.

Als Workaround reicht das angegebene aus (ggf. übrigens auch in der front_content.php in contenido/external/frontend ändern - damit man es nicht vergisst), aber eine endgültige Lösung ist es eigentlich nicht.

Ich würde erwarten, dass Contenido die Sprache anhand des Mandanten aus der DB ermittelt, wenn changeclient angegeben ist, changelang jedoch nicht. Oder halt nochmal überprüft, ob die bestimmte Kombination $client/$lang überhaupt möglich ist.

Aber das ist halt relativ. So wie es jetzt ist, ist es performanter, sofern man für jeden Client ein eigenes Verzeichnis zur Verfügung stellen kann.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo »

Die Anforderung war, daß mit lang=XX die Sprache nur temporär gewechselt wird, und mit changelang=XX dauerhaft.

Kann man sehen wie man möchte, aber ich für meinen Teil packe z.b. für verschiedene Sprachen einfach das Frontend in verschiedene Verzeichnisse, passe die config.php entsprechend an und verlinke den Rest mit symlinks auf Dateisystemebene.
Hagbard
Beiträge: 66
Registriert: Sa 18. Okt 2003, 23:52
Kontaktdaten:

Beitrag von Hagbard »

Vielen Dank HerrB! Ich bin begeistert. Das hat mich jetzt schon ewig gefuchst :)
Gesperrt