Pregunta

¿Cómo se crea CSS dinámico y JavaScript sobre la marcha (usando PHP)? Esto debe hacerse ya que las diferentes páginas tienen diferentes conjuntos de elementos a veces, por lo que envolver y enviar un CSS / JS grande cada vez sería excesivo. ¿Y por qué muchos sitios tienen etiquetas de enlace como esta:

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

¿Cómo llega el CSS a conocer los parámetros GET?

Dado que esto podría implicar la reescritura de URL o el uso de la función de encabezado, proporcione ejemplos breves

¿Fue útil?

Solución

Entonces, hay algunos enfoques diferentes que puede tomar aquí. Primero, si tiene acceso a los archivos de host virtual de apache, puede configurar CSS para que sea leído por un intérprete php. Nunca he hecho esto y no lo recomendaría exactamente, pero un ejemplo es:

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

Esto también se puede hacer en su archivo .htaccess.

Alternativamente, puede hacer un enlace como

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

y poner

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

como la primera línea.

Nunca he considerado la técnica de Vinicius, pero no dudo que tenga sus propias ventajas y desventajas también.

PS: a veces las variables GET se utilizan para el almacenamiento en caché (o en realidad para evitar el almacenamiento en caché al agregar la marca de tiempo de Unix actual al enlace CSS con PHP como

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

Otros consejos

Una solicitud a un archivo .css o .js se puede redirigir a un script PHP usando, por ejemplo, un .htaccess (en Apache), por lo que incluso si el atributo src es " style.css " ;, en realidad es un Script PHP que responde al usuario.

Sus archivos CSS y Javascript están en caché, no recomendaría servir diferentes hojas de estilo / archivos js a menos que tengan un tamaño de aproximadamente 200 KB.

Y sí, puede hacer referencia a cualquier página del lado del servidor con parámetros (.php o cualquier extensión) siempre que devuelva el tipo de contenido correcto para ese archivo.

Nota al margen: por lo general, si tiene parámetros y está sirviendo archivos dinámicamente de esta manera, creo que no se almacenarán en caché automáticamente a menos que lo configure para ello.

Ejemplo simple:

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

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

Sus archivos CSS y Javascript están en caché, no recomendaría servir diferentes hojas de estilo / archivos js a menos que tengan un tamaño de aproximadamente 200 KB.

Y sí, puede hacer referencia a cualquier página del lado del servidor con parámetros (.php o cualquier extensión) siempre que devuelva el tipo de contenido correcto para ese archivo.

Nota al margen: por lo general, si tiene parámetros y está sirviendo archivos dinámicamente de esta manera, creo que no se almacenarán en caché automáticamente a menos que lo configure para ello.

Ejemplo simple:

<*>

Puede usar echo, puede usar un sistema de plantillas, puede extraer otros archivos css con file_get_contents, lo clave es que necesita enviar el tipo de contenido correcto, tomar los parámetros correctos y tener una reserva predeterminada si no hay parámetros se dan.

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;?>; }

Puede usar echo, puede usar un sistema de plantillas, puede extraer otros archivos css con file_get_contents, lo clave es que necesita enviar el tipo de contenido correcto, tomar los parámetros correctos y tener una reserva predeterminada si no hay parámetros se dan.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top