// you’re reading...

CMS

MODx Revolution multi-Domain Context Installation

Mit Einführung der neuen “Revolution”-Generation des MODX Content Management Systems ist es möglich, mehrere Domains mit einer Installation der Software MODx zu betreiben. Bisher war eine solche Konstellation nur mit workarounds zu erreichen und diese Lösungen waren auch nicht immer unter allen Aspekten der Web-Kunst 100% zuverlässig.
Nachfolgend also eine Anleitung für MODx Revolution und damit verbunden herzlichen Dank an Jason Coward (opengeek), der bei der Erstinstallation und zahllosen anderen MODx-Themen mit viel OpenSource-Energie unterstützt hat.

This document is also available in english.

Annahmen

  1. Diese Anleitung basiert darauf, dass alle von der MODx Revolution Installation zu bedienenden Domains auf ein und das selbe Verzeichnis/den gleichen documentroot auf Ihrem webserver zeigen, z.B. /var/www/localhost/htdocs oder /var/www/localhost/modxrevomulti oder einem entsprechenden Pfad auf anderen Betriebssystemen.
  2. In diesem Tutorial werden die Domains modx-templates.com, ffmwireless.de, thesearchgoeson.com testweise genutzt, deren Verwendung könnte sich zukünftig wieder einmal ändern.
  3. Versionen: Den ersten erfolgreichen multi-Domain-Test hatte ich in Revolution beta-2 durchgeführt, für dieses Tutorial wird eine beta-5 SVN verwendet, die Version sollte aber zukünftig keine Rolle mehr spielen.
  4. Weiterhin klammere ich die Betrachtung der Autorenrechte und deren Abgrenzung zwischen den Domains im MODx-Manager aus, weil ich sie nicht benötige :-) – für Ihr Projekt sollten Sie dies gegebenenfalls vorher prüfen.
  5. Diese Einführung geht davon aus, dass Sie bereits eine MODx Revolution Installation in Betrieb genommen und keine grösseren Änderungen daran vorgenommen haben. Falls nicht: hier gibt es die benötigten MODx-Installationsdateien.
  6. Ich habe in den System > System Settings die friendly_urls und zugehörige Einstellungen eingeschaltet, das ist jedoch nicht zwingend.

Contexts

Der komplette architekturelle Neuaufbau führt im MODx “Revolution”-release unter dem Stichwort “Contexts” das Konzept ein, jeder website – und anderen Elementen – innnerhalb der MODx-Datenstrukturen einen eigenen, gekapselten Bereich zuzuordnen – eben einen Kontext.

Nach der normalen Installation eines MODx Revolution Paketes sieht der Manager etwa wie folgt aus, einige Beispieldokumente habe ich bereits hinzugefügt:

MODx Revolution Basisinstallation

Bild 1: MODx Revolution Basisinstallation

Sie sehen den Standard-Context web, den MODx immer installiert und die 3 Dokumente “Start”, “MODx Revo … Tutorial” und “Error 404 page”.

Betrachtet man sich nun die Übersicht der Contexts in MODx (Menu System > Contexts),

MODx Contexts view and "Create contexts" dialog

Bild2: MODx Contexts Ansicht und "Create Context" Dialog

so sieht man 2 Einträge: web, den bereits angesprochenen Standard-Context für die 1. website und mgr, den MODx Manager, der eine Sonderrolle einnimmt und das MODx-Verwaltungs-backend enthält.

Diesen Contexts fügen wir nun zwei weitere hinzu, für jede zusätzlich zu behandelnde Domain einen. Nach der Erstellung der zusätzlichen Contexts sieht es im MODx-Manager dann folgendermassen aus

MODx Contexts für zusätzliche Domains hinzugefügt

Bild 3: MODx Contexts für zusätzliche Domains hinzugefügt

Fügen Sie nun den Contexts noch einige zukünftige Standarddokumente hinzu, Sie benötigen mindestens eine Startseite/Indexseite pro Domain/Context und jeweils eine Fehlerseite.
Dabei sind Namen und Bezeichnungen nebensächlich, lediglich die Dokument-IDs benötigen wir später für die Komplettierung der Konfiguration der Contexts. Danach sollte es für jede Ihrer Domains in etwa so aussehen

MODx-Manager nach der Einrichtung der Standarddokumente für jeden Context/Domain

Bild 4: MODx-Manager nach der Einrichtung der Standarddokumente für jeden Context/Domain

Weitere Einrichtung der zusätzlichen Contexts im MODx Manager

Contexts sind komplett unabhängig konfigurierbar, erben aber zunächst nach dem inheritance-Prinzip alle von der Basisinstallation bekannten website-Parameter und wir werden folglich einige Parameter der jeweiligen Contexts anpassen (müssen).

Öffnen Sie im Manager zunächst wieder über System > Contexts die Ansicht der Contexts, Sie sehen dann wieder eine Ansicht entsprechend Bild 3.
Klicken Sie mit der rechten Maustaste auf den zu bearbeitenden Context (ich beginne mit “thesearch”) und wählen Sie im erscheinenden Menu “Update Context” aus. Darauf hin erscheint der Context in der Bearbeitungsansicht und Sie müssen noch auf den Reiter “Context Settings” wechseln, die dann folgende Ansicht sehen Sie hier

MODx Context Bearbeiten Ansicht

Bild 5: MODx Context Bearbeiten Ansicht

Sie ergänzen nun nacheinander folgende Angaben durch einen Klick auf Create new

key  |  value

http_host  |  www.thesearchgoeson.com
site_url  |  http://www.thesearchgoeson.com
base_url  |  /
site_name  |  MODxCMS TheSearchGoesOn test
site_start  |  6
error_page  |  7  [optional, aber empfehlenswert]
default_template  |  3  [optional, wenn Sie mehrere templates vorbereitet haben]

Neben key & value müssen Sie im Dialog auch das Feld name befüllen, hier setzen Sie zweckmässige Bezeichnungen ein und die anderen Felder können Sie entsprechend der Voreinstellungen im Dialog belassen oder wo angebracht mit weiteren Informationen versehen. Die Werte für site_start und error_page können Sie in Bild 4 oder entsprechend der Angaben auf Ihrer Seite ablesen.

Wenn MODx für den eingegebenen key bereits einen Wert für das Feld name in der mitgelieferten Sprachdatei findet, werden Ihre manuellen Angaben ggf. nicht angezeigt. Am Ende der Einstellungen sehen die Context-Parameter dann etwa wie folgt aus (sortiert nach key)

MODx Context konfiguriert

MODx Context konfiguriert

Wiederholen Sie diesen Schritt für die weiteren von Ihnen einzurichtenden Domains, ich habe den Context ffmwireless ebenfalls mit den entsprechenden Einstellungen versehen und wir können damit zum letzten Schritt des Tutorials übergehen.

Mapping der Domains und Contexts in der Datei index.php

Zuletzt noch ein einfacher Schritt in der index.php in Ihrem MODx Wurzelverzeichnis (= dem documentroot Ihres webservers für diese MODx-Installation), Sie können diese Datei hier im Originalzustand sehen.

Löschen oder kommentieren Sie nun die Zeile 89

//$modx->initialize('web');

in dem Sie die beiden slashes “//” voranstellen und ergänzen Sie direkt nach dieser Zeile den folgenden code-Block, natürlich angepasst an Ihre Domainnamen und die Anzahl der von Ihrer Installation zu betreibenden Domains

/* setup for multiple domains */
switch(strtolower(MODX_HTTP_HOST)) {
   case 'www.modx-templates.com:80':
   case 'www.modx-templates.com':
      // if the http_host is modx-templates.com, switch the context to web
      $modx->initialize('web');
      break;
   case 'www.ffmwireless.de:80':
   case 'www.ffmwireless.de':
      // if the http_host is ffmwireless.de, switch the context to ffmwireless
      $modx->initialize('ffmwireless');
      break;
   case 'www.thesearchgoeson.com:80':
   case 'www.thesearchgoeson.com':
      // if the http_host is thesearchgoeson.com, switch the context to thesearch
      $modx->initialize('thesearch');
      break;
  default:
      // by default / if no other rule can be applied, load 'web' context
      $modx->initialize('web');
      break;
}

Nach Ihrem code-Block sollten nun noch diese Zeilen

/* execute the request handler */
if (!MODX_API_MODE) {
    $modx->handleRequest();
}

aus dem Originalcode stehen, die gesamte neue MODx indx.php Datei können Sie hier betrachten (Zeilen 91 – 112 wurden verändert).

Das war’s, Sie haben es geschafft – MODx läuft mit mehreren Domains und Sie können diese Vorgehensweise auch bei weiteren Domains/Contexts oder anderen Anlässen anwenden!

Beiträge, die ebenfalls für Sie interessant sein könnten:

Discussion

Trackback URL for this post: http://www.h-quadrat.com/techblog/93-modx-revolution-multi-domain-context-installation.php/trackback

2 comments for “MODx Revolution multi-Domain Context Installation”

  1. [...] Diese Anleitung gibt es auch auf Deutsch. [...]

    Posted by MODx Revolution multi-Domain Context Installation english | H-Quadrat IT TechBlog | Beratung ¤ Webdesign ¤ Content Management Systeme ¤ [web]Entwicklung ¤ Hosting ¤ IT Services Delivery in Rüsselsheim | November 30, 2009, 04:27
  2. [...] MODx Revolution multi-Domain Context Installation [...]

    Posted by Weblinks: MODx Tipps und TYPOlight Namensänderung | AboutCMS! | May 17, 2010, 14:57

Post a comment

You must be logged in to post a comment.