Frage

Wie kann man Dynamische CSS und JavaScript On-The-Fly (mit PHP) erstellen. Dies muss getan werden, als verschiedene Seiten haben unterschiedliche Menge von Elementen manchmal, so wickeln und eine große CSS / JS jedes Mal viel des Guten wäre zu senden. Und warum viele Websites haben Link-Tags wie folgt tun:

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

Wie funktioniert die CSS kommen, um die GET-Parameter wissen?

Da diese URL-Rewriting oder Verwendung der Header-Funktion beinhalten könnte, bitte kurze Beispiele liefern

War es hilfreich?

Lösung

So gibt es ein paar verschiedenen Ansätze, die Sie hier nehmen. Erstens, wenn Sie den Zugriff auf Apache Virtualhost-Dateien haben, können Sie CSS gesetzt durch ein PHP-Interpreter gelesen werden. Ich habe das nie getan und würde es genau empfehlen, aber ein Beispiel ist:

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

Dies kann auch in der .htaccess-Datei durchgeführt werden.

Alternativ können Sie einen Link wie

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

und setzen

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

als die erste Zeile.

Ich habe noch nie Vinicius' Technik angesehen, aber ich zweifle nicht, daß auch seine eigenen Vor- und Nachteile hat.

PS - manchmal GET-Variablen sind Anwendungen für das Caching (oder tatsächlich Caching zu verhindern, indem sie den aktuellen Unix-Zeitstempel auf den CSS-Link mit php wie

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

Andere Tipps

Eine Anforderung an einem CSS- oder JS-Datei kann zu einem PHP-Skript umgeleitet werden, indem zum Beispiel eine .htaccess (in Apache), so dass selbst wenn das Attribut src ist „style.css“, es ist eigentlich ein PHP Skript, das den Benutzer reagiert.

Ihre CSS und Javascript-Dateien zwischengespeichert werden, würde ich nicht anders Stylesheets / js Dateien dienen empfehlen, es sei denn, sie sind> 200KB oder so groß.

Und ja, können Sie einen beliebigen serverseitigen Seite mit Parametern (.php oder was auch immer Erweiterung) verweisen, solange sie den richtigen Content-Type für die Datei zurückgibt.

Nebenbei bemerkt: In der Regel, wenn Sie Parameter und werden dynamisch Dateien auf diese Weise dienen, glaube ich, werden sie nicht automatisch zwischengespeichert werden, wenn Sie es so einrichten, zu tun

.

Einfaches Beispiel:

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

<?php
header('Content-Type', 'text/css; charset=utf-8');
$colorScheme = (string)$_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;?>;
}

Sie Echo verwenden können, können Sie ein Template-System verwenden, können Sie in anderen CSS-Dateien mit file_get_contents ziehen können, Schlüssel ist, müssen Sie den richtigen Content-Type schicken, die richtigen Parameter greifen und einen Standard-Rückfall, wenn keine Parameter gegeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top