Miten olisi mahdollista kirjoittaa PHP:tä CSS- tiedostoon, jonka olen liittänyt HTML tiedostoon tällaisella koodilla:
<link type="text/css" href="all.css" media="all" rel="stylesheet">
?
Näin:
<link type="text/css" href="all_css.php" media="all" rel="stylesheet">
Eli lataa tyylitiedostoksi php-tiedosto.
Kysymys kuuluukin, miksi css-tiedostossa pitää olla jotain dynaamista? Tämähän ei välttämättä näy kaikille käyttäjille, koska selaimet käyttävät (onneksi) välimuistia, jolloin tiedostoa ei ladata kuin tarvittaessa. Cachen tappaminen taas kasvattaa latausaikoja (ja tiedosto käsitellään palvelin päässä vieden prosessoritehoa) ja kasvattaa kaistaa.
Tällöin taas rikotaan juuri tyylitiedoston idea, eli staattinen tiedosto, joka ladataan vain tarvittaessa ja haetaan sen jälkeen käyttäjän selaimen välimuistista.
Ja siellä PHP-tiedostossa pitää lähettää vielä oikea mime-tyyppi, eli header('Content-type: text/css');
Itse laittaisin dynaamisuuden tyylitiedoston ulkopuolelle Leben mainitsemista syistä ja vähän muistakin.
Ei näin:
Näin:
Sitä tarttee siihen kun haluaa tehdä sivun, jonka värejä käyttäjä saa muuttaa.
Kiitos vastauksistanne! Taidanpa muutta sen CSS tiedoston PP:ksi.
<?php header('content-type: text/css; charset=utf-8'); ob_start('ob_gzhandler'); echo file_get_contents('all.css'); if( isset($_GET['ie7']) ) { echo file_get_contents('all_ie7.css'); } if( isset($_GET['ie6']) ) { echo file_get_contents('all_ie6.css'); } ob_end_flush(); ?>
Käyttö vaikka näin:
<!--[if !IE]><!--><link type="text/css" href="all.css.php" media="all" rel="stylesheet"><!--<![endif]--> <!--[if IE 7]><link type="text/css" href="all.css.php?ie7" media="all" rel="stylesheet"><![endif]--> <!--[if lte IE 6]><link type="text/css" href="all.css.php?ie6" media="all" rel="stylesheet"><![endif]-->
Ja kas kummaa, tarjoilet CSS:n pakattuna ja kaupanpäällisiksi aina yhdestä tiedostosta maksimaalisen nopeuden takaamiseksi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.