ein Backend mehrere websites

Hier bekommst Du deutschsprachigen Support. Keine Fehlermeldungen oder Erweiterungswünsche bitte!
phalancs
Posts: 792
Joined: Thu 19. Feb 2004, 05:09
Location: Germany

ein Backend mehrere websites

Post by phalancs » Tue 26. Sep 2006, 01:45

PHPWCMS um mehrere Seiten zu administrieren.

Ich weiss das es schon teilweise hier diskutiert wurde.

Meistens wurde empfohlen, dass wenn man phpwcms für mehrere Seiten benutzen möchte eine zweite Installation anlegen sollte. Das halte ich irgendwie für absolut unnötig, da phpwcms von seiner Struktur doch egtl. dafür ausgelegt ist als ein Backend für mehrere Projekte fungieren zu können.

Von den Funktionen her passt das auch optimal und übersichtlicher als mehrere Installationen ist es allemal.
Das einzige wobei ich da noch Probleme habe ich das Menü - Wie kann ich unterschiedliche Menüstyles anlegen??

Die Menüstyles werden ja in dieser config template Datei festgelegt, deshalb werden sie leider sitewide angewandt.

Kennt jemand da einen Workaround?

Danke!
2008

User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Post by flip-flop » Tue 26. Sep 2006, 05:50

Hi phlalance,

bezüglich des MEnüsystems: Der TAG NAV_LIST_UL (V1.2.8 ) wird nicht durch die conf.template_default.inc.php gesteuert. Die Fremd-RTs auch nicht.

Weiß nicht ob es hilft.

Gruß Knut
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )

phalancs
Posts: 792
Joined: Thu 19. Feb 2004, 05:09
Location: Germany

Post by phalancs » Tue 26. Sep 2006, 13:04

Ja hilft, danke, habe mir sowas schon gedacht. Darübe rlässt es sich machen (mit einem zur not eigenen RT).

Thx
2008

User avatar
Oliver Georgi
Site Admin
Posts: 9576
Joined: Fri 3. Oct 2003, 22:22
Location: Moscow, Russia
Contact:

Post by Oliver Georgi » Tue 26. Sep 2006, 17:45

Ich hatte das schon ein paar mal als Beispiel angebracht - phpwcms ist derzeit nicht über das Backend so zu steuern, dass unterschiedliche Domains genutzt werden können. Insgesamt ist es aber eher trivial.

Das wichtigste ist der Wert aus $LEVEL_ID[1]. Entspricht der aktuellen ID der 1. Menüebene.

Denke Dir das so:

[ROOT] - Home (ID:0)
[domain1] - Root Domain 1 (ID:1)
[domain2] - Root Domain 2 (ID:2)

Nun baust Du ein Script in frontend_init, das wie folgt aussieht:

Code: Select all

<?php
// compare against current domain and redirect to correct if neccessary
if(isset($LEVEL_ID[1])) {
  //check active Domain
  if($LEVEL_ID[1] == 1 && strpos(PHPWCMS_URL, 'mydomain1.com') === false) {
    headerRedirect('http://www.mydomain1.com/index.php'.returnGlobalGET_QueryString());
  }
  if($LEVEL_ID[1] == 2 && strpos(PHPWCMS_URL, 'mydomain2.com') === false) {
    headerRedirect('http://www.mydomain2.com/index.php'.returnGlobalGET_QueryString());
  }
}
?>
Habs nicht getestet. Sollte aber so gehen.

Wichtig!

Code: Select all

$phpwcms['site'] = 'http://'.$_SERVER['SERVER_NAME'].'/';
$_SERVER['SERVER_NAME'] sollte immer die gerade aufgerufene Domain enthalten.

Über $LEVEL_ID[1] kennst Du dann auch immer die Startlevel ID für die Menüs.

Für die Indexseite sollte dann noch ein eigener Redirect geschrieben werden, der dann die aktuell aufgerufene Domain prüft und entsprechend dieser in die Startseite der betreffenden Domain weiterleitet.

Oliver
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон

User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Post by flip-flop » Wed 27. Sep 2006, 07:49

@Oliver:
Für die Indexseite sollte dann noch ein eigener Redirect geschrieben werden, der dann die aktuell aufgerufene Domain prüft und entsprechend dieser in die Startseite der betreffenden Domain weiterleitet.
Das wäre ja eine Umschaltung für z.Bsp. eine mehrsprachige Seite ohne in der .htaccess rumzufummeln. Super.

Wie wird denn die index abgefragt? Bitte um einen Anschub.

Code: Select all

....  if($LEVEL_ID[1] == 0 && strpos(PHPWCMS_URL, 'mydomain1.com') === false) ..... {
Gruß Knut
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )

User avatar
Oliver Georgi
Site Admin
Posts: 9576
Joined: Fri 3. Oct 2003, 22:22
Location: Moscow, Russia
Contact:

Post by Oliver Georgi » Wed 27. Sep 2006, 08:01

Index (Root) entspricht immer $LEVEL_ID[0]. Die Bedingung

Code: Select all

LEVEL_ID[1] == 0
ist praktisch unmöglich ;-), da jede Level ID unterhalb des Roots >0 ist.

Für die Index funktioniert mein beschriebenes Verfahren auch nicht!!! Deswegen muss dort eine separate Prüfung erfolgen. Alle unterhalb Root liegenden Level werden ja von der "Weiche" auf Basis von LEVEL_ID[1] erfasst.

Deswegen lautet die Prüfung schlichtweg wie folgt:

Code: Select all

...if($aktion[0] == 0 && strpos(PHPWCMS_URL, 'mydomain1.com') === false)...
Nur dann kannst Du sicher sein, dass die aufgerufene Seite aus dem Root Level stammt und sich auch gerade dort befindet.

Wobei im Index keine False Prüfung erfolgen sollte, denn hier möchte man ja erreichen, dass bei Aufruf der Index unter einer bestimmten Domain automatisch auf die passende Domain-Startseite weitergeleitet wird:

Code: Select all

if($aktion[0] == 0) {
  if(strpos(PHPWCMS_URL, 'mydomain1.com')) {
    headerRedirect('http://www.mydomain1.com/index.php?mydomain1_start');
  } elseif(strpos(PHPWCMS_URL, 'mydomain2.com') {
    headerRedirect('http://www.mydomain2.com/index.php?mydomain2_start');
  } else {
    //redirect to "default"
    headerRedirect('http://www.default.com/index.php?default_start');
  }
}
Oliver
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон

User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Post by flip-flop » Wed 27. Sep 2006, 10:01

...if($aktion[0] == 0 && strpos(PHPWCMS_URL, 'mydomain1.com') === false)...
Yep, bei dieser Variante dreht sich die ganze Sache um. mydomain1 -> mydomain2 und umgekehrt. Also bitte nicht verwenden.
# Please don´t use this.

Hier eine funktionierende Umschaltung für zwei domains mydomain1.com und mydomain2.com mit einem
HTTP Status Code: HTTP/1.1 301 Moved Permanently
# There is a switch working with two domains mydomain1.com and mydomain2.com generating an HTTP Status Code:
HTTP Status Code: HTTP/1.1 301 Moved Permanently

Code: Select all

<?php
// compare against current domain and redirect to correct if neccessary
// http://www.phpwcms.de/forum/viewtopic.php?p=73771
// Installation: Put this snippet into the folder /frontend_init/ 
// and switch at conf.inc.php: $phpwcms['allow_ext_init']    = 1; 
// E.g.:
// Startpoint from mydomain1.com is the ID=1 -> $LEVEL_ID[1] = 1
// Startpoint from mydomain2.com is the ID=2 -> $LEVEL_ID[1] = 2
//
// PHPWCMS_URL -> http://mydomainX.com/
// returnGlobalGET_QueryString() -> ?alias
// $aktion[0] == 0 -> pointer at the root level


if(isset($LEVEL_ID[1])) { 
	// Pointer behind the root level ?
	// Yes -> check active Domain behind root level
		if($LEVEL_ID[1] == 1 && strpos(PHPWCMS_URL, 'mydomain1.com') === false) { 
		// E.g. Using the ID=1 (for maydomain1.com) but with the domain maydomain2.com, than switch back to .mydomain1.com
		// E.g. http://www.mydomain2.com/index.php?1-contact  switch to http://www..mydomain1.com/index.php?1-contact
			headerRedirect('http://www.mydomain1.com/index.php'.returnGlobalGET_QueryString());
		} else { 
		 // The same for the domain mydomain2.com
			if($LEVEL_ID[1] == 2 && strpos(PHPWCMS_URL, 'mydomain2.com') === false) {
				headerRedirect('http://www.mydomain2.com/index.php'.returnGlobalGET_QueryString());
				}
			}
} else {
	// check root level for active Domain
	if($aktion[0] == 0) { 
	// pointer on the root level e.g. http://mydomain1.com/  ??
		if(strpos(PHPWCMS_URL, 'mydomain1.com')) { 
		// Yes, go to my startpage for the domain 1
			header( "HTTP/1.1 301 Moved Permanently" );
			headerRedirect('http:/www.mydomain1.com/index.php?mydomain1_start');
		} elseif(strpos(PHPWCMS_URL, 'mydomain2.com')) { 
			// The same for domain 2
			header( "HTTP/1.1 301 Moved Permanently" );
			headerRedirect('http://www.mydomain2.com/index.php?mydomain2_start');
			} else { 
			//redirect to "default"  -> Fallback if there is an third domain or what ever
				header( "HTTP/1.1 301 Moved Permanently" );
				headerRedirect('http://www.default.com/index.php?default_start');
				}
		}
}
?>
[EDIT 27.09.06] Header() -> header() [/EDIT]

#Works well for me.

Arbeitet ausgezeichnet.

[EDIT 08.02.07]
Output of relevant variables:

Code: Select all

[PHP]
echo ' >>-Server_Name-: '.$_SERVER["SERVER_NAME"];
echo ' >>-PHPWCMS_URL-: '.PHPWCMS_URL;
echo ' >>-QueryString-: '.returnGlobalGET_QueryString();

echo ' >>-LEVEL-: '; 
dumpVar($GLOBALS['LEVEL_ID']);

echo ' >>-aktion_0-: ';
dumpVar($GLOBALS['aktion']);
[/PHP]
[/EDIT]


[EDIT 08.12.06]
Die neueste Variante: http://www.phpwcms.de/forum/viewtopic.php?p=77729#77729

Code: Select all

if(preg_match('/\.de$/i', $_SERVER['SERVER_NAME'])) {
   //de
   headerRedirect('dahin');
} else {
   //en or whatever...
   headerRedirect('dorthin');
}
[/EDIT]

Thanks Oliver
Last edited by flip-flop on Thu 19. Jul 2007, 14:45, edited 10 times in total.
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )

User avatar
Oliver Georgi
Site Admin
Posts: 9576
Joined: Fri 3. Oct 2003, 22:22
Location: Moscow, Russia
Contact:

Post by Oliver Georgi » Wed 27. Sep 2006, 10:09

Header() -> header()!!!


I will enhance headerRedirect by additional value for that.

Oliver
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон

phalancs
Posts: 792
Joined: Thu 19. Feb 2004, 05:09
Location: Germany

Post by phalancs » Mon 27. Nov 2006, 15:22

Hab diesen Thread erst gerade wiedergefunden, da hat sich ne menge getan. Gefällt mir alles sehr gut!

Ich hoffe ntürlich insgeheim darauf, dass der Multidomainsupport irgendwann Teil der Sitestructure-Settings wird :)

Erstmal ein Danke an Oli und Konsorten.
2008

User avatar
Oliver Georgi
Site Admin
Posts: 9576
Joined: Fri 3. Oct 2003, 22:22
Location: Moscow, Russia
Contact:

Post by Oliver Georgi » Mon 27. Nov 2006, 17:25

Schon in Planung ... aber für einen späteren Zeitpunkt.

Oliver
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон

User avatar
kukki
Posts: 1667
Joined: Mon 7. Feb 2005, 20:02
Location: Berlin Köpenick
Contact:

Post by kukki » Mon 27. Nov 2006, 17:56

Ich habe mich damit auch schon einmal rumgequält. Leider bin ich kein PHP-Profi und habe mir die Hilfe eines Freundes dazugeholt. :P
Theoretisch müßte man eine Weiche für eine variable config.php einbauen (case/ if else ... ), die die unterschiedlichen Dok_roots und andere Variablen erzeugt, vorausgesetzt - Du hast zwei Domains dafür zur Verfügung. Wenn diese verbogen werden könnte, inclusive der Datenbank-db_prepend für die unterschiedlichen Daten, dann könnte doch die Sache auf die Reihe gehen.

Zwei Tabellensammlungen mit unterschiedlichen Kennzeichen (Prepend) erzeugen ist ja nicht so schwierig.

Die restlichen Einstellungen werden dann für eine entgültige Config.php zusamenngestellt, das endet aber in einen "Hack", der bei jedem Update zu beachten ist. Bei mehreren Websites ist mir diese Lösung einfach zu aufwendig!
Image
Lieber arm dran als Arm ab!

meine historische Website: Jagdgeschwader 300 1.9.0 RC2
kukki's SpIeLwIeSe V.1.9.8 R549 responsive

User avatar
Oliver Georgi
Site Admin
Posts: 9576
Joined: Fri 3. Oct 2003, 22:22
Location: Moscow, Russia
Contact:

Post by Oliver Georgi » Mon 27. Nov 2006, 19:22

Naja, auf der Basis denke ich erst mal nicht. Das ist etwas vollkommen anderes und erst mal nicht geplant. Kann man sich bereits heute mittels symbolischer Links "zusammenfrickeln".

Oliver
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон

phalancs
Posts: 792
Joined: Thu 19. Feb 2004, 05:09
Location: Germany

Post by phalancs » Mon 27. Nov 2006, 20:08

@kukki
Was macht Das für einen Sinn? Dann kan man es doch gleich zweimal installieren. Also der Sinn so einer Multidomain lösung soll ja gerade im "Content Sharing" liegen.

Das ganze ist egtlo. auch relativ unkompliziert, solange man in derLage ist die Domain aufs richtige ziel aufzuschalten.

:)
2008

User avatar
kukki
Posts: 1667
Joined: Mon 7. Feb 2005, 20:02
Location: Berlin Köpenick
Contact:

Post by kukki » Tue 28. Nov 2006, 10:35

Die eigentliche (Be)Nutzung war ja auch nicht klar gestellt worden, ob ich das System als Webagentur benutze um mehrere Website zu administrieren/ zu erstellen oder ob ich nur auf meinem eigenen Webspace damit zwei oder drei Domains für zwei drei Websites bedienen will. Im letzteren Fall würde ich eine Einzelinstallation vorziehen, denn ein Update/ Upgrade ist damit unkomplizierter.

Ich habe bereit mehrere Anfragen gehabt, wo ein Kunde zwei Webseiten haben wollte, auf ein und denselben Webspace mit eigenen TLDs. Das Argument, die Seiten später trennen zu wollen, weil der Geschäftsbereich sich ebenfalls trennt, schlug sofort ein, dieses System zweimal separat zu installieren und zu adminitrieren. :roll:
Kann man sich bereits heute mittels symbolischer Links "zusammenfrickeln".
Bitteschön, kann man - ist aber bestimmt keine tolle Lösung, denn es sollte ja ein System sein, dass zum Schluß auch noch updatefähig ist.

:!: Allerdings bleibt für mich dieses Thema auch akkut, denn mir würde es auch schon helfen, ... ich selber betreibe u.a. eine solche Website, die von 4 verschiedenen TLDs angesteuert wird, 4 verschiedene Eintrittspunkte hat, die thematisch aber auch sehr eng verzahnt sind und zusammengehören. da hätte ich eine solche Lösung auch gebrauchen können, weil andersrum natürlich der Aufwand für die Pflege (Datenbanken ...), vor allem wenn dann noch Redakteure daran arbeiten steigt. :!:
Lieber arm dran als Arm ab!

meine historische Website: Jagdgeschwader 300 1.9.0 RC2
kukki's SpIeLwIeSe V.1.9.8 R549 responsive

Both
Posts: 32
Joined: Thu 3. Mar 2005, 18:13

Post by Both » Tue 11. Sep 2007, 20:54

Hi,

ich muß gleich einräumen, daß ich mit PHP nicht so unterwegs bin.

Das Skript

Code: Select all


<?php
// compare against current domain and redirect to correct if neccessary
// http://www.phpwcms.de/forum/viewtopic.php?p=73771
// Installation: Put this snippet into the folder /frontend_init/
// and switch at conf.inc.php: $phpwcms['allow_ext_init']    = 1;
// E.g.:
// Startpoint from mydomain1.com is the ID=1 -> $LEVEL_ID[1] = 1
// Startpoint from mydomain2.com is the ID=2 -> $LEVEL_ID[1] = 2
//
// PHPWCMS_URL -> http://mydomainX.com/
// returnGlobalGET_QueryString() -> ?alias
// $aktion[0] == 0 -> pointer at the root level


if(isset($LEVEL_ID[1])) {
   // Pointer behind the root level ?
   // Yes -> check active Domain behind root level
      if($LEVEL_ID[1] == 1 && strpos(PHPWCMS_URL, 'mydomain1.com') === false) {
      // E.g. Using the ID=1 (for maydomain1.com) but with the domain maydomain2.com, than switch back to .mydomain1.com
      // E.g. http://www.mydomain2.com/index.php?1-contact  switch to http://www..mydomain1.com/index.php?1-contact
         headerRedirect('http://www.mydomain1.com/index.php'.returnGlobalGET_QueryString());
      } else {
       // The same for the domain mydomain2.com
         if($LEVEL_ID[1] == 2 && strpos(PHPWCMS_URL, 'mydomain2.com') === false) {
            headerRedirect('http://www.mydomain2.com/index.php'.returnGlobalGET_QueryString());
            }
         }
} else {
   // check root level for active Domain
   if($aktion[0] == 0) {
   // pointer on the root level e.g. http://mydomain1.com/  ??
      if(strpos(PHPWCMS_URL, 'mydomain1.com')) {
      // Yes, go to my startpage for the domain 1
         header( "HTTP/1.1 301 Moved Permanently" );
         headerRedirect('http:/www.mydomain1.com/index.php?mydomain1_start');
      } elseif(strpos(PHPWCMS_URL, 'mydomain2.com')) {
         // The same for domain 2
         header( "HTTP/1.1 301 Moved Permanently" );
         headerRedirect('http://www.mydomain2.com/index.php?mydomain2_start');
         } else {
         //redirect to "default"  -> Fallback if there is an third domain or what ever
            header( "HTTP/1.1 301 Moved Permanently" );
            headerRedirect('http://www.default.com/index.php?default_start');
            }
      }
}
?>
funktioniert ja ausgezeichnet in der 1.3.3 Version. Aber nun zu meinen Fragen:

1) Wie seht das ganze für mehrere Domains aus? Kann mir jemand hier ein Beispiel posten? Das Skript aus dem Thread
http://www.phpwcms.de/forum/viewtopic.php?p=77729#77729
wollte bei mir irgendwie nicht, sonst hätte ich das genommen.

2) Was sagen denn die Suchemaschinen zu der Umleitung. Delisten die einen vielleicht nicht gleich?

Beste Grüsse

Both

Post Reply