Für einen Kunden sollte ich eine einfache Möglichkeit schaffen, um das Hintergrundbild auf allen Seiten austauschen zu können.
Das Problem ist, in concrete5 gibt es keine globale Attribute, die für alle Seiten gelten. Eine einfache Lösung dafür ist jedoch, die Startseite (meistens mit der pageID =1) zu verwenden, um die dort definierten Einstellungen (z.B. das background_image) auf alle Seiten anzuwenden.

Vorgehensweise am Beispiel eines Hintergrundbildes, das auf alle Seiten erscheinen soll

  • Neues Attribut "background_image" vom Typ Bild/Datei im Backend anlegen
  • PHP Code im Bereich der "body" Beschreibung entsprechend erweitern
  • Hintergrundbild der Startseite zuweisen

Das Hintergrundbild erscheint dann auf allen Seiten.

So wird das Seitenattribut angelegt:


So wird das Hintergrundbild der Startseite zugewiesen:



So wird der PHP Code für das Seitentemplate erweitert:

<?php
$home = Page::getByID(1); // homepage id meist 1  
$objFile = $home->getAttribute('background_image');
// print_r($file); exit;
$strPath = '';
if (is_object($objFile) && $objFile instanceof File && !$objFile->error)  {
$strPath = $objFile->getVersion()->getRelativePath();
            // echo $strPath ;exit;
            $strBG = 'style="background-image: url(' . $strPath . ')"';
}
?> 
<!-- jetzt noch den body damit belegen -->
<body <?php echo $strBG;?>>

Nachtrag

Wenn über eine CSS Stylesheet Definition bereits ein Hintergrundbild definiert wurde, dann erscheint dieses als Vorbelegung. Wird dann über das Backend vom Redakteur ein Hintergrundbild zugewiesen, kann dominiert die Zuweisung über die "STYLE" Definition.

Der PHP Code könnte jetzt auch noch seitentyp-spezifisch ausgelegt sein, so dass das der Startseite zugewiesene Hintergrundbild nur auf bestimmten Seiten die Vorbelegung überschreibt.