2011-03-28 20 views
7

Quiero incluir un archivo CSS específico que se debe aplicar a la página principal, y 6-7 páginas más en mi sitio.CakePHP: ¿incluye CSS basado en páginas específicas?

Sé que puedo hacer esto a través de PHP, obteniendo la URL, descubriendo qué página, vinculando el CSS ... etc., pero me preguntaba si había una manera hábil (o mejor) de utilizar CakePHP para incluir el (los) archivo (s) correcto (s) de css.

Me doy cuenta de que puedo vincular el archivo CSS desde las vistas específicas, pero - entonces no estarían en el <head>. ¿Hay alguna forma de vincular desde una vista y hacer que aparezca en la cabeza?

Espero que mis preguntas tengan sentido, y agradezco mucho cualquier ayuda.

+0

gracias por la edición - Supongo que ocultó mi etiqueta de la cabeza - soy un novato stockoverflow :) – Dave

Respuesta

19

que se dan cuenta de que puedo vincular el archivo CSS de los puntos de vista específicos, pero - entonces no estarían en la <head>. ¿Hay una forma de para vincular desde una vista y tenerlo aparecer en la cabeza?

Sí, estarían en la cabeza. Ver el HTML Helper documentation:

Si la clave 'inline' se establece en false en parámetro $ options, las etiquetas de enlace son añade a la variable $ scripts_for_layout que se puede imprimir en el interior la etiqueta de la cabeza del documento.

Por lo tanto, este fragmento en su opinión ...

$this->Html->css('my-css', null, array('inline' => false)); 

... <link> agregará el elemento adecuado para su <head>.

+1

¡Muchas gracias por guiarme en la dirección correcta!Para aclarar su respuesta para cualquier otra persona que esté confundida como yo, puede "incluir" su archivo css desde su vista, pero hacerlo a través del código Html-> css de Cake, y establecer su opción en inline => false, como se mencionó anteriormente. respuesta, agregará el css EN la etiqueta de la cabeza como lo desee. No funcionó para mí hasta que agregué null como la segunda opción: Html-> css ('layout1', null, array ('inline' => false)); ?> No estoy seguro de si hice algo mal, o si debe incluir el 2 ° parámetro como se menciona en la documentación. – Dave

+0

@Dave: estás en lo cierto. La matriz de opciones es el tercer argumento, no el segundo argumento. Actualicé mi respuesta. –

+0

perfecto, ¡gracias de nuevo por su ayuda! – Dave

0

Comprobar este pequeño tutorial a cabo:

http://nuts-and-bolts-of-cakephp.com/2008/05/05/css-files-and-scripts_for_layout/

Básicamente se puede utilizar este estándar vista atributo $ scripts_for_layout para inyectar archivos CSS en base a la vista. Espero que esto es lo que estás buscando. Hay algunas otras opciones locas en las que pensé, que incluyen el análisis de extensiones, pero probablemente serían más engorrosas que simplemente vincular manualmente las hojas de estilo. Creo que este enlace describe la mejor solución.

0

No es la respuesta a su pregunta, pero ... puede programar su propia inyección para el archivo de diseño. El problema con $ scripts_for_layout es que los códigos js y css se inyectan en el encabezado. Si escribe su propia implementación, puede colocar $ scripts_for_layout var (para js) al final del archivo de diseño. La señal es: separación ...

Cuestiones relacionadas