Page 1 of 3
Modulvorstellung: MultiDomains
Posted: Thu May 20, 2010 6:13 pm
by Andiministrator
Hey Jungs (und Mädels),
In den letzten beiden Wochen habe ich ein neues Modul für CMSms entwickelt: MultiDomains
Download:
http://dev.cmsmadesimple.org/project/files/852
Dieses Modul ermöglicht es, mit einer CMSms Installation mehrere Domains zu nutzen. Dabei kann festgelegt werden, welche Domain auf welche Seite (bzw. Seitenbaum) gelinkt werden soll. Die entsprechenden Umleitungen geschehen dann automatisch.
Weiterhin bietet es eine Funktion, um verschobene Seiten (oder alte URLs) mittels 301 Weiterleitung auf eine neue Seite weiterzuleiten (quasi, was das Modul MovedPages auch macht).
Zu guterletzt gibt es eine kleine Statistik, wieviel Zugriffe über welche Domain kamen.
Ach ja, es gibt auch eine Unterstützung für Entwicklungsserver, so dass man beim Überspielen der Datenbank nichts ändern muss.
So, nun mal eine kleine Anleitung, wie es eingesetzt wird:
1. Aktiviere mod_rewrite
- Öffne die Datei "config.php" (im CMSms Root Verzeichnis) und setze den Parameter "url_rewriting" auf "mod_rewrite" (falls dies nicht schon geschehen ist)
- Erstelle eine neue Datei namens ".htaccess" (falls diese nicht bereits existiert) im CMSms Root Verzeichnis mit (mindestens) folgendem Inhalt:
Code: Select all
# .htaccess für CMS made simple
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_METHOD} !POST$
RewriteRule ^(.*) %{REQUEST_URI}/ [NE,R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteRule ^(.+)$ index.php?page=$1 [QSA]
# EOF
2. Füge den Modul Platzhalter in Ddin Seiten Template ein
Füge den folgenden Platzhalter an den Anfang deiner Seiten-Templates ein:
Code: Select all
{cms_module module='MultiDomains'}
Der Platzhalter MUSS AM ANFANG deiner Seiten-Templates stehen (noch vor "{process_pagedata}")!
3. Füge deine Domains im Modul-Backend hinzu
Gehe ins Modul-Backend (unter Erweiterungen/MultiDomains) und füge deine Domains mit deren zugehörigen Seiten(bäumen) hinzu.
Wenn Probleme auftreten, würde ich mich über eine Problembeschreibung freuen, so dass ich das Problem nachstellen kann ...
Re: Modulvorstellung: MultiDomains
Posted: Fri May 21, 2010 12:36 pm
by NaN
Ich habe eine Vision... Ich denke werde eine Schnittstelle zu diesem Modul mit in AdvancedContent einbauen!

(Ähnlich wie mit dem FrontendUser Zugriff auf eine Seite)
So kann man gleich beim Bearbeiten einer Seite festlegen unter welcher Domain sie erreichbar sein soll, ohne anschließend nochmal in Dein Modul gehen und das ändern zu müssen.
(Ich mags, wenn Dinge wie aus einer Handbewegung geschehen

)
Aber vorher werd ich das Ding erstmal testen

Schonmal danke für dieses Modul.
Jetzt kann ich mir das ganze HickHack mit internen Weiterleitungen etc. sparen.
(Hatte eine Seite mit Subdomains, hat aber mit CMSms nicht so wirklich schön funktioniert bzw. war nicht so einfach zu managen. Ich hoffe, dass sich das jetzt ändert

)
Re: Modulvorstellung: MultiDomains
Posted: Fri May 21, 2010 1:11 pm
by Andiministrator
Klingt interessant und könnte ich mir auch gut vorstellen
Jetzt schau ich erstmal, ob gravierende Probleme auftreten und dann lass uns das angehen.
Ich baue derzeit auch das Comments-Modul neu, vielleicht kann man da (später) auch ein Kontrollfeld in AdvancedContent einbauen, um zu kontrollieren, für welche Seite Kommentare erlaubt werden sollen ...
Re: Modulvorstellung: MultiDomains
Posted: Sat May 22, 2010 11:08 am
by nockenfell
Bin gerade am Testen des Moduls. Daraus ergibt sich folgende Frage:
Ich habe eine Seite mit folgender stark vereinfachte Strukur:
1 Hauptseite
2 Seite
2.1 Seite
2.2 ...
3 Seite mit anderer Domain
3.1 ...
4 Seite
Die Weiterleitung der 2. Domain auf die Seite 3 funktioniert problemlos. Dargestellt wird dabei das gleiche wie bei der Hauptdomain. Nun erscheinen jedoch alle Menüpunkte mit der Zweitdomain. Ich möchte jedoch nur den 3-er Stamm mit der Zweitdomain erreichbar haben. Sobald aus diesem Bereich herausgesurft wird, soll wieder die Hauptdomain gelten.
Zu sehen hier:
http://www.lernholz.com (Hauptdomain)
http://www.lerncd.eu (zweitdomain)
Die Hauptdomain ist im MultiDomains als Hauptdomain definiert.
Re: Modulvorstellung: MultiDomains
Posted: Sat May 22, 2010 11:23 am
by nockenfell
Eine kleine Unschönheit:
Mit aktivierter Multidomain sind alle Seiten sowohl mit
http://www.domain.de/seite.htm wie auch
http://www.domain.de/seite/ erreichbar
Das ist SEO technisch nicht optimal. Ist mir vorhin beim Testen der Umleitung alter URLs aufgefallen. Ansonsten ein super Modul!
Re: Modulvorstellung: MultiDomains
Posted: Sat May 22, 2010 1:44 pm
by Andiministrator
Hallo nockenfell,
Danke für die Rückmeldung!
Ich werde mir morgen/übermorgen die Sachen mal anschauen und melde mich dann wieder.
Viele Grüße
Andi
Re: Modulvorstellung: MultiDomains
Posted: Sun May 23, 2010 9:49 am
by Andiministrator
nockenfell wrote:
Nun erscheinen jedoch alle Menüpunkte mit der Zweitdomain. Ich möchte jedoch nur den 3-er Stamm mit der Zweitdomain erreichbar haben.
Ersteinmal zum Verständnis, dass wir nicht aneinander vorbei reden: In Deinem Menü erscheinen alle Menüpunkte mit der selben Domain, richtig? Wenn Du darauf klickst, müsste allerdings korrekt auf die jeweils eingestellte Domain (mit 301) weitergeleitet werden.
Da hast Du natürlich recht, dass ist nicht so toll. Das Problem ist der Menümanager, welcher immer die root_url aus der config.php nimmt. An dem möchte ich jedoch nichts modifizieren, das ist ein Core-Modul. Ich denke das beste wird sein, wenn ich für den Menümanager einen Modifikator für {$node->url} schreibe, der dann für $node->url die korrekte URL einsetzt.
Mir wird gerade noch ein weiteres Problem bewusst. Wenn man im CMSms Backend eine Seite löscht, diese aber noch im Modul "MultiDomains" angelegt ist, kann es zu Komplikationen kommen. Hier muss ich wohl noch eine Abfrage schreiben.
Ist das nicht in der config.php ( $config['page_extension']='/'; ) geregelt?
Re: Modulvorstellung: MultiDomains
Posted: Sun May 23, 2010 10:40 am
by nockenfell
Andiministrator wrote:
nockenfell wrote:
Nun erscheinen jedoch alle Menüpunkte mit der Zweitdomain. Ich möchte jedoch nur den 3-er Stamm mit der Zweitdomain erreichbar haben.
Ersteinmal zum Verständnis, dass wir nicht aneinander vorbei reden: In Deinem Menü erscheinen alle Menüpunkte mit der selben Domain, richtig? Wenn Du darauf klickst, müsste allerdings korrekt auf die jeweils eingestellte Domain (mit 301) weitergeleitet werden.
Genau. Siehe am einfachten die beiden Links die ich angehängt habe:
http://www.lernholz.com (bisherige Hauptdomain für alles)
http://www.lerncd.eu (Zweitdomain nur für einen bestimmten Teil)
Da hast Du natürlich recht, dass ist nicht so toll. Das Problem ist der Menümanager, welcher immer die root_url aus der config.php nimmt. An dem möchte ich jedoch nichts modifizieren, das ist ein Core-Modul. Ich denke das beste wird sein, wenn ich für den Menümanager einen Modifikator für {$node->url} schreibe, der dann für $node->url die korrekte URL einsetzt.
Das könnte funktionieren.
Ist das nicht in der config.php ( $config['page_extension']='/'; ) geregelt?
Ja. In der config.php ist ".htm" als page_extension eingetragen. Deshalb ist die Weiterleitung auf
www.domain.de/seite/ nicht korrekt.
Re: Modulvorstellung: MultiDomains
Posted: Sun May 23, 2010 12:54 pm
by NaN
Könnte man das mit dem Redirect nicht auch per Eventmanager lösen?
Sodass bereits umgeleitet wird bevor das Template geparst wird.
Dann kann man sich das {cms_module module="MultiDomains"} im Template sparen und das ganze wäre unabhängig vom verwendeten Template.
Ein paar kleine Fehler:
Wenn ich eine neue Domain anlegen will, erscheint folgendes:
Notice: Undefined index: domain in /Volumes/External/Webstuff/Websites/CMSms/modules/MultiDomains/function.admin_domains.php on line 35
Notice: Undefined index: devdomain in /Volumes/External/Webstuff/Websites/CMSms/modules/MultiDomains/function.admin_domains.php on line 38
Notice: Undefined index: domain in /Volumes/External/Webstuff/Websites/CMSms/modules/MultiDomains/function.admin_domains.php on line 41
Notice: Undefined index: prefix in /Volumes/External/Webstuff/Websites/CMSms/modules/MultiDomains/function.admin_domains.php on line 43
Notice: Undefined index: page_id in /Volumes/External/Webstuff/Websites/CMSms/modules/MultiDomains/function.admin_domains.php on line 45
Notice: Undefined index: active in /Volumes/External/Webstuff/Websites/CMSms/modules/MultiDomains/function.admin_domains.php on line 47
Notice: Undefined index: notes in /Volumes/External/Webstuff/Websites/CMSms/modules/MultiDomains/function.admin_domains.php on line 52
Das liegt daran, dass der parameter "domain" auch beim Link "Neue Domain" mit übergeben wird:
function.admin_domains.php Zeile 123 wrote:
$smarty->assign('newdomainlink', $this->CreateLink( $id, 'admin_editdomain', '', $imagenew.' '.$this->Lang('newdomain'), array ( 'tabto'=>$tabto, 'domain'=>'' ), '', false, false, ' title="'.$this->Lang('newdomain').'"'));
Demzufolge ist beim Hinzufügen einer neuen Domain die Bedingung
immer gegeben.
(function.admin_domains.php in der Zeile 15)
Allerdings enthält der Parameter keinen Inhalt.
Wodurch Zeile 18
Code: Select all
$domain = (int)$params['domain'];
immer 0 (Null) ergibt
Was wiederum bedeutet, dass Zeile 20
Code: Select all
$db->GetRow( ... , array($domain))
kein Ergebnis zurückliefert.
Es wird aber nicht nochmal geprüft, ob es ein Ergebnis gibt, oder nicht.
Re: Modulvorstellung: MultiDomains
Posted: Sun May 23, 2010 1:03 pm
by Andiministrator
NaN wrote:
Könnte man das mit dem Redirect nicht auch per Eventmanager lösen?
Sodass bereits umgeleitet wird bevor das Template geparst wird.
Gute Idee. Werde ich mal prüfen, ob das machbar ist.
NaN wrote:
Wenn ich eine neue Domain anlegen will, erscheint folgendes:
Notice: Undefined index: domain in /Volumes/External/Webstuff/Websites/CMSms/modules/MultiDomains
Danke für den Hinweis und die ausführliche Beschreibung. Werde ich mir auch ansehen.
Re: Modulvorstellung: MultiDomains
Posted: Mon May 24, 2010 8:50 pm
by Andiministrator
Folgende Probleme habe ich nun beseitigt:
- - Falsche Domainendung (page_extension aus der config.php wurde ignoriert)
- - Warnmeldungen beim Domain hinzufügen
- - Log Summary funktionierte nicht
Dann habe ich mir mal NaNs Vorschlag mit den Events angeschaut. Ich denke, das sollte machbar sein. Der früheste Event, den ich finden konnte, ist "ContentPreCompile". Wenn Ihr einen besseren kennt, immer her damit, sonst werd ichs mit dem versuchen.
Ich muss dazu allerdings die ganze Funktionalität von der action.default.php in eine Klassenfunktion verlagern, dazu brauche ich mal noch etwas.
Wenn das geschafft ist, schaue ich mir die Sache mit dem Menumanager an.
Den derzeitigen Stand habe ich im SVN-Repository eingecheckt. Sollte eigentlich stabil sein.
Re: Modulvorstellung: MultiDomains
Posted: Thu May 27, 2010 10:02 am
by Andiministrator
So, ich habe mehrere Änderungen und Bugfixes vorgenommen und MultiDomains in Version 1.3 veröffentlicht. Download gibt es hier:
http://dev.cmsmadesimple.org/project/files/852
Geändert hat sich unter anderem folgendes:
* Auf Eventsteuerung umgestellt - Platzhalter wird nun nicht mehr benötigt.
+ Schalter für Statistiken und Alte URL Weiterleitungen hinzugefügt.
+ EMail Funktion für monatliche Statistik hinzugefügt.
* Problem mit Log Summary.
* Problem mit falschen Page Extensions beseitigt.
* Problem mit Default Content beseitigt.
@NaN: Wie hast Du Dein PHP Error Reporting eingestellt? Meins steht auf
Code: Select all
error_reporting = E_ALL & E_NOTICE & E_STRICT
Damit kann ich keine Warnmeldungen sehen.
@nockenfell: Zu der Sache mit den korrekten Domainnamen im Menü kam ich noch nicht, das muss mal noch etwas warten (hab erstmal einen Rewrite vom Comment Modul auf der ToDo-Liste stehen - zur Zeit etwas stressig hier, muss Prioritäten setzen). Ich hab das Ganze mal mit in die Feature Requests aufgenommen, dass ichs nicht vergesse.
Wenn irgendwelche Probleme auftauchen, würde ich mich über eine Nachricht freuen.
Re: Modulvorstellung: MultiDomains
Posted: Thu May 27, 2010 11:56 am
by nockenfell
Andiministrator wrote:
@nockenfell: Zu der Sache mit den korrekten Domainnamen im Menü kam ich noch nicht, das muss mal noch etwas warten (hab erstmal einen Rewrite vom Comment Modul auf der ToDo-Liste stehen - zur Zeit etwas stressig hier, muss Prioritäten setzen). Ich hab das Ganze mal mit in die Feature Requests aufgenommen, dass ichs nicht vergesse.
Wenn irgendwelche Probleme auftauchen, würde ich mich über eine Nachricht freuen.
Danke für die Weiterentwicklung!! Bei mir stehen meine Projekte im Moment ein wenig still, da ich zuviel Arbeit habe...
Die Weiterleitungen klappen mit der Extension noch immer nicht reibungslos. Nun kommt zwar die Extension, nur hat es vor der Extension ein /:
www.domain.com/seite/.htm
Der URL Aufbau ist somit noch nicht korrekt.
Eine URL mit der Webseite auf der ich dies teste, habe ich dir per PM gesendet.
Re: Modulvorstellung: MultiDomains
Posted: Thu May 27, 2010 12:51 pm
by Andiministrator
Hallo nockenfell,
Vielen Dank für den Hinweis. Ich habe das Problem gleich behoben und die Version 1.3 ersetzt (denke, es haben noch nicht viele runtergeladen). Also einfach nochmal downloaden, sollte jetzt gehen. Falls weitere Probleme bestehen, bitte melden.
Re: Modulvorstellung: MultiDomains
Posted: Thu May 27, 2010 2:17 pm
by nockenfell
Super, funktioniert. Danke.
Einen kleinen Bug habe ich dennoch entdeckt. Wenn als "Seite" bei der URL Weiterleitung nichts definiert wird, wird als URL
www.domain.de/.htm
generiert. Dies ist natürlich nicht korrekt. Entweder musst du beim Speichern abfangen das immer eine Seite ausgewählt ist, oder beim zusammenstellen der Extension schauen ob du überhaupt ein Alias hast.