[gelöst] Verschiedene Bereiche - verschiedene Seitenköpfe ?
am 26.05.2010 - 06:11 Uhr in
Meine Internetseite wird inhaltlich aus drei fachlichen Bereichen bestehen.
Z.B.:
http://www.meine-domain.de/reports/....
http://www.meine-domain.de/information/....
Je nach Bereich in dem ich mich gerade befinde (kann z.B. über die URL ermittelt werden), möchte ich den gesamten Kopf der Internetseite ändern.
Für den allgemeinen Teil (wie etwa die Startseite), möchte ich zum Beispiel den Kopf wie hier auf DrupalCenter.de haben - Logo auf blauem Hintergrund.
Navigiere ich aber in den Bereich 'Report', so soll der Hintergrund z.B. nicht mehr blau, sondern rot sein.
Das Modul HeaderImage läßt seider nur den Austausch einer einzelnen Kopfgrafik zu :( Damit geht es wohl nicht.
Gruss,
Thorsten
- Anmelden oder Registrieren um Kommentare zu schreiben
hallo, ich würde einfach die
am 26.05.2010 - 07:33 Uhr
hallo,
ich würde einfach die css datei austauschen bzw überschreiben
im groben so:
function themename_preprocess_page(&$vars, $hook) {
if(arg[0]=='argument')
{
drupal_add_css('pfad', 'theme', 'all', TRUE);
$vars['css']=drupal_get_css();
}
}
CSS + Themer
am 26.05.2010 - 07:35 Uhr
Hallo.
Um dies zu errreichen, benötigst Du für jeden Bereich für das
<body>
Element eine eigene Klasse.Beispiel:
<body class="reports">...</body>
Diese Klasse lässt sich mit dem Modul [do:themer Themer] automatisch (basierend auf dem aktuellen Pfad) dem Element hinzufügen.
Danach kannst Du dann mittels CSS je nach Klasse andere Anweisungen schreiben, die dann beispielsweise die Farbe des Hintergrunds ändern.
hth,
Stefan
Alternativ Node Typ Theme
am 26.05.2010 - 07:55 Uhr
Das Modul Themer klingt richtig gut, Kannte ich noch gar nicht - danke Stefan :-)
Alternativ kannst du das auch über den Content Typ steuern. Wenn Du für verschiedene Bereiche mit verschiedenen Content Typen arbeitest, dann ist Node Typ Theme eine Alternative für dich. Steuerst Du die Bereiche jedoch über Taxonomie, dann kannst Du Node Typ Theme nicht gebrauchen. Das Modul ist aufwändig, da es ein komplettes Theme benötigt. Hier musst Du sehr stark auf globale und themespezifische Einstellungen (Logo, Favicon, Blöcke) achten. Kommt halt auf Einsatzzweck und Voraussetzungen an.
Es bringt dir wenig, wenn deine Seite z.B. in Blautönen ist und nur der Header rot, gelb, braun oder grün wird. Daher solltest Du überlegen, ob der Headerwechsel reicht, oder die komplette Website angepasst werden soll. Kommt jedoch hier auch extrem auf das Design an, das verwendet wird.
Gruß 2be
Irgendetwas scheint zu fehlen ...
am 26.05.2010 - 11:29 Uhr
Danke für die schnelle Antwort.
Ich habe das so umgesetzt und gebe ich innerhalb von der Funktion die Variable $vars['css'] aus sehe ich auch die neu hinzugefügte CSS Datei.
<link type="text/css" rel="stylesheet" media="all" href="/themes/garland/style.css?C" />
<link type="text/css" rel="stylesheet" media="all" href="/themes/garland/report.css?C" />
<link type="text/css" rel="stylesheet" media="print" href="/themes/garland/print.css?C" />
Im Quelltext der angezeigten Seite sieht der Kopf aber leider so aus
<link type="text/css" rel="stylesheet" media="all" href="/themes/garland/style.css?C" />
<link type="text/css" rel="stylesheet" media="print" href="/themes/garland/print.css?C" />
Die hinzugefügte Zeile ist wieder verschwunden :(
Noch irgendeine Idee ?
Der Vollständigkeit halber hier die 'neue' Funktion:
function garland_preprocess_page(&$vars) {
if(arg(0) == 'report') {
drupal_add_css('themes/garland/report.css', 'theme');
$vars['css']=drupal_get_css();
dpr($vars['css']); // Just for Debug - Devel Print Variable
}
}
Die Lösung
am 26.05.2010 - 11:28 Uhr
So funktioniert es wie benötigt:
function garland_preprocess_page(&$vars) {
if(arg(0) == 'report') {
drupal_add_css('themes/garland/report.css', 'theme');
$vars['css']=drupal_get_css();
$vars['styles']=drupal_get_css();
}
}
Herzlichen Dank!