Alltägliche Sache: Eigenes CSS für den Drucker

Papierloses Büro? Weit gefehlt! Noch immer werden viele Informationen ausgedruckt; auch Webseiten, auch Webseiten die mit CakePHP entwickelt worden sind. Es gehört also zur Standardaufgabe, die Webseiten für den Drucker zu optimieren. Dafür bietet CSS einen eigenen media-Typ namens ‘print‘ an. Ich möchte hier nicht über CSS und die media-Typen referrieren, dazu findet man reichlich Informationen bpsw. hier, hier und hier.

CSS in Layouts

In CakePHP können die zu verwendenden CSS mittels des HTLM-Helpers in das Layout geschrieben werden, also etwa so:

//View/Layouts/default.ctp
 ...
 <head>
 <?php echo $this->Html->css('meincss);
 </head>
 ...

Im webroot-Ordner (app/webroot/css) muss dann die Datei ‘meincss.css’ liegen und Cake bindet diese dann automatisch für alle Seiten ein.

Blöcke als neues Konzept

In CakePHP 2.x wurde nun noch das Konzept der Blöcke (Blocks) eingeführt.. Näheres dazu hier. Der CSS-Block wird im Head-Bereich aufgerufen mit

//View/Layouts/default.ctp
 ...
 <head>
 <?php echo $this->fetch('css'); ?>
 </head>
 ...

Nun kann in beliebigen Views eine CSS Datei über den Befehl

//View/Posts/result.ctp
 <?php
 $this->Html->css('print', null, array('inline' => false));
 ?>

eingebunden werden. Dieser “Block” wird dann im Head-Bereich mittels der fetch()-Methode eingebunden. So kann man einzelnen Views explizit eine eigene CSS-Datei zuweisen.

Tags: , , , ,

{Beteiligung geschlossen! }