Ajouter du PHP dans vos feuilles CSS
Dans le but d’assurer une maintenance facile des sites web, les développeurs choisissent maintenant de séparer le fond (code HTML) et la forme (feuille de style CSS et Javascript).Nous verrons ici comment ajouter du PHP dans vos CSS. Pour cela nous utiliserons trois méthodes suivantes:
1- Inclure un fichier PHP avec la fonction "include()"
Ici vous allez inclure un fichier PHP contenant vos déclarations CSS qui pourront contenir tout le code PHP que vous voudrez à l'intérieur d'une balise style :
Méthode avec la fonction include()
<style type="text/css">
<?php include('/styles.php'); ?>
</style>
2- Servir le contenu d'un fichier PHP en tant que "text/css"
Pour cette méthode, on utilise toujours un fichier styles.php, mais cette fois, on le place à l'intérieur de la balise <link> :
Balise link
<link rel="stylesheet" href="/styles.php" type="text/css" />
Dans le fichier styles.php, il suffit d'ajouter une ligne pour indiquer au navigateur que le contenu doit être considéré comme du "text/css" :
Header PHP de content-type
<?php
header('content-type: text/css');
?>
1- Inclure un fichier PHP avec la fonction "include()"
Ici vous allez inclure un fichier PHP contenant vos déclarations CSS qui pourront contenir tout le code PHP que vous voudrez à l'intérieur d'une balise style :
Méthode avec la fonction include()
<style type="text/css">
<?php include('/styles.php'); ?>
</style>
2- Servir le contenu d'un fichier PHP en tant que "text/css"
Pour cette méthode, on utilise toujours un fichier styles.php, mais cette fois, on le place à l'intérieur de la balise <link> :
Balise link
<link rel="stylesheet" href="/styles.php" type="text/css" />
Dans le fichier styles.php, il suffit d'ajouter une ligne pour indiquer au navigateur que le contenu doit être considéré comme du "text/css" :
Header PHP de content-type
<?php
header('content-type: text/css');
?>
Remarque : Le problème ici c’est que le fichier styles.php ne sera pas placé dans le cache du navigateur et sera chargé systématiquement à chaque requête. Pour remédier à cela, il faudra ajouter la ligne :
Header PHP du code HTTP 304
<?php
header('HTTP/1.0 304 Not Modified');
?>
Dans le même esprit, il semble possible d'utiliser les fonctions de Cache-Control comme max-age et must-revalidate :
Header PHP de cache-control
<?php
header('Cache-Control: max-age=3600, must-revalidate');
?>
Ceci indique le nombre de secondes durant lesquelles la page devra être conservée dans le cache du navigateur, à partir du moment où elle a été demandée.
3- Utiliser une règle de réécriture pour transformer les .css en .php
En fin comme troisième méthode, elle est identique à la deuxième, à la seule différence que le fichier CSS se termine par l'extension .css . Le principe est qu’un fichier htaccess se charge de la réécriture des fichiers se terminant par .css en .php.
* Dans le fichier HTML :
Balise link
<link rel="stylesheet" href="/styles.css" type="text/css" />
* Dans le fichier htaccess :
Code de réécriture
RewriteEngine on
RewriteRule (.*).css /$1.php
Ou alors, on peut aussi demander au serveur d'interpréter les fichiers .css comme étant des fichiers PHP en rajoutant cette ligne dans un fichier htaccess :
Parsing des .css par PHP
AddType application/x-httpd-php .css
Header PHP du code HTTP 304
<?php
header('HTTP/1.0 304 Not Modified');
?>
Dans le même esprit, il semble possible d'utiliser les fonctions de Cache-Control comme max-age et must-revalidate :
Header PHP de cache-control
<?php
header('Cache-Control: max-age=3600, must-revalidate');
?>
Ceci indique le nombre de secondes durant lesquelles la page devra être conservée dans le cache du navigateur, à partir du moment où elle a été demandée.
3- Utiliser une règle de réécriture pour transformer les .css en .php
En fin comme troisième méthode, elle est identique à la deuxième, à la seule différence que le fichier CSS se termine par l'extension .css . Le principe est qu’un fichier htaccess se charge de la réécriture des fichiers se terminant par .css en .php.
* Dans le fichier HTML :
Balise link
<link rel="stylesheet" href="/styles.css" type="text/css" />
* Dans le fichier htaccess :
Code de réécriture
RewriteEngine on
RewriteRule (.*).css /$1.php
Ou alors, on peut aussi demander au serveur d'interpréter les fichiers .css comme étant des fichiers PHP en rajoutant cette ligne dans un fichier htaccess :
Parsing des .css par PHP
AddType application/x-httpd-php .css