Mmmh, ich konnte das nicht nachstellen (V4.6.4). Hast Du Dich einmal aus Contenido ab- und wieder angemeldet, nachdem Du den bzw. die weiteren Mandanten erzeugt hast?
Ich gehe davon aus, dass die Erst-Initialisierung von $cfgClient in der front_content.php in Zeile 59 erfolgt:
$cfgClient["set"] wird - wenn ich nicht wieder zu dusselig zum Suchen war, nur in functions.general.php in der Funktion rereadClients definiert.
Die Funktion verwendet wiederum diese SQL-Abfrage:
Code: Alles auswählen
$sql = "SELECT
idclient,
frontendpath,
htmlpath,
errsite_cat,
errsite_art
FROM
".$cfg["tab"]["clients"];
Danach heißt es:
Code: Alles auswählen
while ($db->next_record())
{
$cfgClient["set"] = "set";
$cfgClient[$db->f("idclient")]["path"]["frontend"] = $db->f("frontendpath");
D.h. werden die Daten des ersten Mandanten geladen, werden auch gleich alle anderen in den Array geladen.
Ich würde behaupten, dass zwischen Zeile 59 (rereadClients) und Zeile 128 (if (!$sess->is_registered("client") ) $sess->register("client");) die Daten zu den weiteren Mandanten aus dem Array nicht verloren gehen dürften.
Könntest Du das ggf. nochmal testen oder weitere Informationen zur Reproduzierbarkeit zur Verfügung stellen?
Etwas könnte man jedoch beachten: Wird changeclient angegeben, sollte man bei Deiner Konstellation auch changelang angeben: Wird changeclient angegeben, werden die dazugehörigen Sprach-Variablen $lang und $load_lang geleert (da sie nur zum Standardmandanten passen dürften, $load_lang kommt aus der config.php im Mandantenverzeichnis).
Da keine Sprache gesetzt ist, wird - sofern in der config.php im Mandantenverzeichnis angegeben (und das ist der Standard) - $lang = $load_lang gesetzt. $load_lang ist aber i.A. die Sprach-ID der Standardsprache des ersten Mandanten - da jeder Mandant eine eigene Sprache haben muss, passt dieser Wert nicht zum zweiten Mandanten (der mit changeclient gewählt wurde). Das kostet unnötig Zeit.
Beispiel:
Mandant A mit Sprach-ID 1 (-> $load_lang in config.php = 1)
Mandant B mit Sprach-ID 2
Aufruf mit changeclient = B (natürlich die ID, nicht "B", ist nur ein Beispiel) -> es wird versucht, die Seite für Mandant B mit Sprach-ID 1 anzuzeigen.
Wird changeclient und changelang korrekt und gleichzeitig angegeben, werden diese Werte für $client und $lang gesetzt und alles läuft weiter.
Dies ist nicht notwendig, wenn die Mandanten in unterschiedlichen Verzeichnissen liegen, da sie dann über separate config.phps mit entsprechenden und passenden $load_lang-Einträgen verfügen.
Gruß
HerrB