lokal 2. Mandanten aufrufen

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
achiboy
Beiträge: 138
Registriert: Do 26. Aug 2004, 05:05
Kontaktdaten:

lokal 2. Mandanten aufrufen

Beitrag von achiboy » Sa 7. Dez 2013, 08:15

Ich bin gerade daran eine Contenido-Installation mit 4 Mandanten auf Contenido 4.9 umzustellen.
Bei der Seite des 1. Mandanten (Ordner /cms) funktioniert alles wunderbar.
Wenn ich nun den 2. Mandanten (Ornder /mandant2) im Frontend aufrufe, kommt immer der Inhalt des ersten Mandanten.
Die URL lautet aber http://localhost/mycontenido/mandant2/front_content.php
  • Die Einstellungen in config.clients.php sehen soweit ok aus.
  • Wenn ich einen Artikel des 2. Mandanten im Backend (Content/Artikel) aufrufe, stimmt der Inhalt. Wenn ich aber z.B. einen Link in der Navigation anklicke, kommt die Error-Page vom 1. Mandanten, dass die Seite nicht gefunden wurde
Kann mir bitte jemand helfen?

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

Re: lokal 2. Mandanten aufrufen

Beitrag von xmurrix » Sa 7. Dez 2013, 11:01

Hallo achiboy,

der Wechsel zwischen mehreren Mandanten innerhalb der gleichen Domain sollte immer mit dem Parameter "changeclient" stattfinden, also mit

Code: Alles auswählen

http://localhost/mycontenido/mandant2/front_content.php?changeclient={idclient}
// z. B.
http://localhost/mycontenido/mandant2/front_content.php?changeclient=2
Das ist deshalb nötig, da die ID des aktuellen Mandanten, sowie die aktuelle Sprache in der Session gespeichert werden. Diese Werte werden nicht automatisch aktualisiert, wenn man zwischen Mandanten wechselt, da braucht man immer Query-Parameter changeclient und/oder changelang in der URL, auch nur einmalig, da dann die neuen Werte in die Session übernommen werden.

Du kannst aber für jeden Mandanten eine Datei "config.local.php" im Mandantenverzeichnis, also unter "{mandantenordner}/data/config/production/" anlegen, in der die Id des Mandanten vorgegeben ist und bei Bedarf gesetzt wird. Dann brauchst du nicht den Query-Parameter beim Wechsel zwischen Mandanten übergeben.
z. B.

Code: Alles auswählen

<?php
global $changeclient, $client;

// Id des Mandanten
$thisClient = {idclient};

if (isset($client) && $client !== $thisClient) {
    // Variable $client existiert, ist aber nicht die des aktuellen Mandanten...
    $client = $thisClient;
    $changeclient = $client;
} elseif (!isset($client)) {
    // Variable $client existiert nicht, ist ein initialer Aufruf der Seite...
    $client = $thisClient;
}
Dann sollte immer diese Id verwendet werden. Für die Sprache braucht man das nicht machen. Zum einen wird die Sprache beim Setzen der Variable $changeclient oder auch bei Aufruf der Seite mit dem Query-Parameter changeclient={idclient} neu gesetzt und zum anderen kann ein Mandant mehrere Sprachen haben...

Eine andere Alternative wäre das Verwenden des Advanced Mod Rewrite Plugins, da kann man den Namen des Mandanten an die generierten URLs voranstellen und dieser Name wird dann zum Ermitteln der Id des Mandanten hergenommen.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

achiboy
Beiträge: 138
Registriert: Do 26. Aug 2004, 05:05
Kontaktdaten:

Re: lokal 2. Mandanten aufrufen

Beitrag von achiboy » Sa 7. Dez 2013, 16:10

perfekt!
Herzlichen Dank für die superschnelle Hilfe...

achiboy
Beiträge: 138
Registriert: Do 26. Aug 2004, 05:05
Kontaktdaten:

Re: lokal 2. Mandanten aufrufen

Beitrag von achiboy » Sa 14. Dez 2013, 07:52

ähm, doch noch eine Frage:
Ist das auf dem Webserver auch nötig?
Das wäre ja dann neu mit Contenido 4.9. oder?

Es handelt sich um 4 Mandanten mit je einer eigenen Domain.

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

Re: lokal 2. Mandanten aufrufen

Beitrag von xmurrix » Sa 14. Dez 2013, 08:44

Morgen,

sofern die Mandanten alle ihr eigenes Mandantenverzeichnis haben, sollte das nicht nötig sein, aber so genau weiß ich das auch nicht.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

achiboy
Beiträge: 138
Registriert: Do 26. Aug 2004, 05:05
Kontaktdaten:

Re: lokal 2. Mandanten aufrufen

Beitrag von achiboy » Sa 14. Dez 2013, 09:16

jeder hat sein eigenes Verzeichnis...
Gibt es irgendwelche Einstellungen, die ich evtl. falsch gemacht habe?

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

Re: lokal 2. Mandanten aufrufen

Beitrag von xmurrix » Sa 14. Dez 2013, 09:20

achiboy hat geschrieben:...Gibt es irgendwelche Einstellungen, die ich evtl. falsch gemacht habe?...
Hmm, kann jetzt nicht sagen, was da bei dir falsch ist, was geht denn nicht?
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

achiboy
Beiträge: 138
Registriert: Do 26. Aug 2004, 05:05
Kontaktdaten:

Re: lokal 2. Mandanten aufrufen

Beitrag von achiboy » Sa 14. Dez 2013, 09:58

ich habe 4 Verzeichnisse zu 4 Mandanten:
/cms => http://www.mandant1.ch
/mandant2 => http://www.mandant2.ch
/mandant3 => http://www.mandant3.ch
/mandant4 => http://www.mandant4.ch

Wenn ich http://www.mandant2.ch aufrufe, erscheint die richtige URL, aber der Inhalt ist von Mandant1...

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

Re: lokal 2. Mandanten aufrufen

Beitrag von xmurrix » Sa 14. Dez 2013, 10:56

achiboy hat geschrieben:...Wenn ich http://www.mandant2.ch aufrufe, erscheint die richtige URL, aber der Inhalt ist von Mandant1...
Du kannst jeweils im Mandantenverzeichnis unter "data/config/production/" jeweils Datei config.local.php mit folgendem Inhalt anlegen:

Code: Alles auswählen

<?php
global $client;

$client = {id_des_mandanten};
Das sorgt dafür, dass immer die richtige ID gesetzt wird.

Besser wäre es, wenn du herausfinden kannst, warum das bei dir passiert. CONTENIDO oder auch das AMR-Plugin setzen nicht die Id des Mandanten anhand der Domain, in der Regel wird geprüft, ob es eine globale Variable $client gibt und ob diese Variable gesetzt ist. Setzen kann man die Variable über Request-Parameter oder es kann auch von der Session kommen. Kommt die Variable von der Session, musst du herausfinden, warum die Mandanten sich die Session trotz verschiedener Domains teilen, was eigentlich nicht möglich sein kann. Bei Subdomains kann man Cookies so setzen, dass auf sie von allen Subdomains zugegriffen werden kann, nicht aber unter verschiedenen Domains...

Gibt es die Variable $client nicht, so wird die Variable $load_client verwendet. Die steht in der Mandantenkonfiguration "{mandantenordner}/data/config/production/config.php" drin. Diese Datei sollte beim Anlegen eines Mandanten generiert und die Variable $load_client gesetzt werden. Wenn man die Datei von einem anderen Mandanten kopiert, kopiert man die Id des anderen Mandanten mit, auch die Id der Sprache!

Konnte die Id des Mandanten auch nicht über $load_client ermittelt werden, dann wird als Fallback der erste Mandant im System gesetzt.

So ungefähr müsste das sein...

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Antworten