2009-09-18 18 views
13

Me gustaría envolver un archivo css en php ... Así que escribo el encabezado para el archivo css y le doy una extensión de php, por lo tanto ... css.php. La pregunta es si esto funcionará si la página ya se está utilizando como un ... ¿o este nuevo encabezado chocará con el marco en el que se está incluyendo la página ????Incluye: css con extensión de archivo php?

+0

¿Puedo preguntar lo que desee utilizar esta ' css.php' archivo para servir? ¿Algún tipo de estilos que se generan en la base de datos o algo así? – gnarf

+0

¿Puedes mostrar algún código? Estoy un poco perdido en cuanto a cuál es la situación. – strager

Respuesta

18

gnarf lo clavó.

yo:

<link rel="stylesheet" type="text/css" media="screen" href="<? echo TMPL ?>css/name-of-file.css.php"> 

y luego en la parte superior de su archivo .css.php:

<? 
header('Content-Type: text/css'); 
// print out your php-driven css... 
?> 
+2

También puede usar 'header (" Content-type: text/css; charset: UTF-8 ");' – Omar

+0

¿Funciona esto con navegadores más antiguos como IE7 y 8? –

+0

Asegúrese de que el encabezado esté impreso en la parte superior del archivo. Si tienes (como yo lo hice) una línea vacía en la parte superior, ¡puede que no funcione en alguna parte! – MilanG

0

Funciona si la secuencia de comandos del includer no envía ningún resultado, de lo contrario tendrá un error "Encabezados ya enviados".

usando ob_start() en el includer puede ser un truco para evitar esto y hacer que todo funcione.

Los marcos html no tienen nada que ver con php includes en su lugar, por lo que no hay ningún conflicto en este caso.

15

Si tiene un archivo llamado css.php, simplemente asegúrese de que las primeras líneas establezcan el encabezado de tipo de contenido adecuado. También es posible que desee dividir las cosas de configuración de la sesión (si hay alguna) en un bootstrap.php si aún no lo ha hecho. Un ejemplo rápido de cargar algo de información de estilo de un DATABSE:

<?php 
    header("Content-Type: text/css"); 
    include('bootstrap.php'); 
    // fetch some information to print out our styles 
    $result = mysql_query("SELECT * FROM site_styles"); 
    while ($row = mysql_fetch_assoc($result)) { 
    echo $row["selector"]." {\n".$row["css"]."\n}\n"; 
    } 
?> 

desde su otro archivo PHP, solo salidas de la etiqueta para incluir el css.php, que no desea utilizar la función de PHP para este include() ¡tarea!

<link rel="stylesheet" type="text/css" href="css.php"/> 

Aunque ya que la mayoría de los navegadores caché de su archivo css bastante agresiva, puede encontrarse con que cambia dinámicamente el contenido de ese archivo no hacen mucho bien. Se podría obligar a que actualizar mediante la adición de un parámetro GET a la href del enlace de este modo:

<link rel="stylesheet" type="text/css" href="css.php?<?php echo $cssversion ?>"/> 

Aunque esto va a recargar completamente su archivo CSS cada vez que los cambios de parámetros. En general, es una mejor práctica servir archivos CSS estáticos por este motivo. Si tiene algunos estilos que deben cargarse desde parámetros de configuración, etc., que no cambian muy a menudo, el primer ejemplo debería funcionar bastante bien para usted.

+1

es una mierda para ver que tu respuesta se ha quedado en blanco. – emc

6

archivo HTML: archivo
<link rel="stylesheet" type="text/css" href="css.php"/>

css.php :
<?php
header("Content-type: text/css; charset=utf-8");
//your php + css code goes here
?>

si su primera línea de código en el archivo de css.php no es
header("Content-type: text/css; charset=utf-8");no funcionará

Cuestiones relacionadas