Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP:tä erillisessä CSS-tiedostossa

Ceox [02.01.2008 14:13:24]

#

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">

?

Lebe80 [02.01.2008 14:22:20]

#

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.

Blaze [02.01.2008 15:03:45]

#

Ja siellä PHP-tiedostossa pitää lähettää vielä oikea mime-tyyppi, eli header('Content-type: text/css');

ville-v [02.01.2008 16:40:35]

#

Itse laittaisin dynaamisuuden tyylitiedoston ulkopuolelle Leben mainitsemista syistä ja vähän muistakin.

Ei näin:

/*Tyylitiedosto*/#loginlinkki{
<?php
if(logged) echo "color: green;";
else echo "color: red;";
?>
}

Näin:

<!-- PHP-tiedosto -->
< a href="###" <?php
if(logged) echo "id=\"viherkuva\"";
else echo "id=\"punakuva\"";
?> >Loginlinkki</a>

Ceox [02.01.2008 18:07:36]

#

Sitä tarttee siihen kun haluaa tehdä sivun, jonka värejä käyttäjä saa muuttaa.
Kiitos vastauksistanne! Taidanpa muutta sen CSS tiedoston PP:ksi.

Merri [02.01.2008 19:07:06]

#

<?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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta