Question

Comment créer des CSS et JavaScript dynamiques à la volée (avec PHP). Cela doit être fait car les différentes pages ont parfois des ensembles d'éléments différents, il serait donc excessif d'envelopper et d'envoyer un fichier CSS / JS volumineux à chaque fois. Et pourquoi de nombreux sites ont-ils des balises de lien comme ceci:

<link rel='stylesheet' type='text/css' href='css/style.css?pg_id=43&post=62'>

Comment le CSS parvient-il à connaître les paramètres GET?

Comme cela peut impliquer une réécriture d'URL ou l'utilisation de la fonction d'en-tête, veuillez fournir de courts exemples

Était-ce utile?

La solution

Donc, vous pouvez adopter différentes approches ici. Tout d'abord, si vous avez accès aux fichiers virtualhost d'Apache, vous pouvez configurer CSS pour qu'il soit lu par un interpréteur PHP. Je n'ai jamais fait cela et je ne le recommanderais pas exactement, mais voici un exemple:

<VirtualHost *:80>
  AddType application/x-httpd-php .css
</VirtualHost>

Ceci peut également être effectué dans votre fichier .htaccess.

Vous pouvez également créer un lien tel que

.
<link rel='stylesheet' type='text/css' href='css/style.php?pg_id=43&post=62'>

et mettez

<?php header("Content-type: text/css"); ?>

comme première ligne.

Je n'ai jamais envisagé la technique de Vinicius, mais je ne doute pas que cela présente aussi ses propres avantages et inconvénients.

PS - Parfois, les variables GET sont utilisées à des fins de mise en cache (ou en fait pour empêcher la mise en cache en ajoutant l’horodatage Unix actuel au lien CSS avec PHP comme

<link href="style.css?<?php echo time()" type="text/css" rel="stylesheet" />

Autres conseils

Une demande vers un fichier .css ou .js peut être redirigée vers un script PHP en utilisant, par exemple, un fichier .htaccess (dans Apache). Ainsi, même si l'attribut src est "style.css", il s'agit en fait d'un Script PHP qui répond à l'utilisateur.

Vos fichiers CSS et Javascript sont mis en cache. Je ne recommanderais donc pas de servir des feuilles de style différentes / des fichiers js, sauf si leur taille est supérieure à 200 Ko.

Et oui, vous pouvez référencer n'importe quelle page côté serveur avec des paramètres (.php ou une extension quelconque) tant qu'elle renvoie le type de contenu correct pour ce fichier.

Note: D'habitude, si vous avez des paramètres et que vous fournissez des fichiers de manière dynamique de cette manière, je pense qu'ils ne seront pas automatiquement mis en cache, sauf si vous le configurez pour le faire.

Exemple simple:

<link rel="stylesheet" type="text/css" href="/css.php?color=wide-red">

<?php
header('Content-Type', 'text/css; charset=utf-8');
$colorScheme = (string)

Vos fichiers CSS et Javascript sont mis en cache. Je ne recommanderais donc pas de servir des feuilles de style différentes / des fichiers js, sauf si leur taille est supérieure à 200 Ko.

Et oui, vous pouvez référencer n'importe quelle page côté serveur avec des paramètres (.php ou une extension quelconque) tant qu'elle renvoie le type de contenu correct pour ce fichier.

Note: D'habitude, si vous avez des paramètres et que vous fournissez des fichiers de manière dynamique de cette manière, je pense qu'ils ne seront pas automatiquement mis en cache, sauf si vous le configurez pour le faire.

Exemple simple:

<*>

Vous pouvez utiliser echo, vous pouvez utiliser un système de templates, vous pouvez extraire d'autres fichiers CSS avec file_get_contents, le principal est que vous deviez envoyer le bon type de contenu, saisir les bons paramètres et avoir un repli par défaut si aucun paramètre sont donnés.

GET['color']; switch ( $colorScheme ) { case 'wide-red': $bgColor = 'c0c0c0'; $fgColor = 'ffffff'; $width = '1280px'; break; case 'normal-gray': $bgColor = '333333'; $fgColor = 'ffffff'; $width = '960px'; } break; } ?> body { background:<?php echo $bgColor;?>; color:<?php echo $fgColor;?>; width:<?php echo $width;?>; }

Vous pouvez utiliser echo, vous pouvez utiliser un système de templates, vous pouvez extraire d'autres fichiers CSS avec file_get_contents, le principal est que vous deviez envoyer le bon type de contenu, saisir les bons paramètres et avoir un repli par défaut si aucun paramètre sont donnés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top