Zum Inhalt springen

Domain aus sys_domain auslesen und in Typoscript weiterverarbeiten

Erstellt am 6. Juli 2012 · 5 Antworten · letzte Antwort am 9. Juli 2012

Tags: URLs & Routing, Frage

kevinq ·

Hallo,
ich hänge an einem Problem, und zwar möchte ich die Domain aus der Datenbank Tabelle sys_domain auslesen und anschließend dinge wie den HTML Base href dynamisch zu generieren. Der Grund dafür ist das für zahlreiche Plugins die Konfiguration der Domain notwendig ist und die Webseite mehrere Bäume für verschiedene Domains beinhaltet die ich alle von Hand ändern muss sobald ich irgendwie zwischen der Live oder Testumgebung wechsle bei welcher natürlich die Domains etwas anders sind (Passiert mindestens 1 mal pro Woche).

Gefunden habe ich bisher nur dieses Snippet.

lib.domain = COA
lib.domain {
  10 = CASE
  10.key.data = leveluid:0
  10.default = TEXT
  10.default.data = DB:sys_domain:2:domainName
  10.52 = TEXT
  10.52.data = DB:sys_domain:1:domainName
}
page.100 < lib.domain

Wenn ich nun testweise das ganze mit

page.headerData.101 = TEXT
page.headerData.101.value < page.100

ausgeben möchte erscheint im HTML nur der Text "COA"

Letztenendes möchte ich sowas nicht mehr von Hand anpassen

[globalString = _SERVER|HTTPS=on]
config.baseURL = https://www.domain.net/
[else]
config.baseURL = http://www.domain.net/
[global]

Kann mir jemand erklären was ich falsch mache?

LuP ·

Hallo,

kevinq schrieb
page.headerData.101 = TEXT
page.headerData.101.value < page.100

damit weist Du einem TEXT-Wert ein COA zu. Das kann nicht gut gehen.

Richtig wäre es gewesen:

page.headerData.101 < lib.domain

oder einfach:

page.headerData.101 = COA
page.headerData.101 {
  10 = CASE
  10.key.data = leveluid:0
  10.default = TEXT
  10.default.data = DB:sys_domain:2:domainName
  10.52 = TEXT
  10.52.data = DB:sys_domain:1:domainName
}

VG,
LuP

kevinq ·

Danke für die Hilfe, ich bin schonmal etwas weiter aber leider nicht am ziel.
das einfache ausgeben mit page.headerData funktioniert soweit schonmal. Aber da wo ich es eigentlich hinnein haben will gibt er mir immernoch nur COA aus. #angry#

lib.domain = COA
	lib.domain {
	  10 = CASE
	  10.key.data = leveluid:1
	  10.default = TEXT
	  10.default.data = DB:sys_domain:1:domainName
	  10.52 = TEXT
	  10.52.data = DB:sys_domain:1:domainName
	} 
	domain.host < lib.domain
	domain.http = COA
	domain.http {
		10 = TEXT
		10.value = http://
		20 < domain.host
	}
	domain.https = COA
	domain.https {
		10 = TEXT
		10.value = https://
		20 < domain.host
	}
[globalString = _SERVER|HTTPS=on]
config.baseURL < domain.https
[else]
config.baseURL < domain.http
[global]

wie setze ich denn nun ein COA in die config Variable?

LuP ·

Hallo,

probiere es mal hiermit:

lib.domain = COA
  10 = CASE
  10.key.data = leveluid:1
  10.default = TEXT
  10.default.data = DB:sys_domain:1:domainName
  10.52 = TEXT
  10.52.data = DB:sys_domain:1:domainName
}

[globalString = _SERVER|HTTPS=on]
lib.domain.wrap = https://|
[else]
lib.domain.wrap = http://|
[global]

config.baseURL < lib.domain

VG,
LuP

LuP ·

Mein vorheriger Ansatz dürfte auch nicht funktionieren, weil baseURL eine Konstante erwartet.

Wie wäre es die einzelnen Domains in Constants zu prüfen?

- Constants:

config.domain = http://www.defaultdomain.tld/

[globalString = ENV:HTTP_HOST=www.domain1.tld] 
  config.domain = http://www.domain1.tld/
[globalString = ENV:HTTP_HOST=www.domain1.tld] AND [globalString =_SERVER|HTTPS=on]
  config.domain = https://www.domain1.tld/
[global]

- Setup:

config.baseURL = {$config.domain}

VG,
LuP

kevinq ·

Mein Ziel ist es aber beim wechsel zwischen Live und Testumgebung nicht das Typoscript anpassen zu müssen. beim syncroniesieren kann ich ziemlich einfach eine Datenbank Tabelle ausschließen. Änerungen am Typoscript sind da deutlich aufwändiger, zumal ich hier derzeit 4 Bäume mit je einer Domain habe, tendenz steigend.