Carga dinámica de hojas de estilo?

Carga dinámica de hojas de estilo?

de Jorge Iglesias -
Número de respuestas: 0

Hola a todos:

Necesito especificar dinámicamente los ficheros .css que se cargarán, en función del tamaño de pantalla del usuario (640 x 480, 800 x 600, etc.)

Lo que hice fue poner el siguiente código al inicio del fichero index.php:

if (isset($_GET['screenwidth'])) {
        $dscreenwidth = $_GET['screenwidth'];
    } else {  
        echo "<script Xlanguage='javascript'>\n";
        echo "  location.href=\"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}"
           . "&screenwidth=\" + screen.width;\n";
        echo "</script>\n";
    }

Esto guardaría en la variable $dscreenwidth el valor del ancho de la pantalla del usuario, con lo que se puede deducir el tamaño de la misma.

Luego, en lib/setup.php, debajo del @session_start, puse:

if (isset($dscreenwidth)) {
     if (!isset($_SESSION['SESSION']->screenwidth)) {
      $_SESSION['SESSION']->screenwidth = $dscreenwidth;
     }
    }

Con esto lograría guardar en el archivo de sesión el valor de $dscreenwidth.

Finalmente, en theme/xxxxx/config.php, cambié el primer enunciado agregándole un condicional:

  if (intval($SESSION->screenwidth) > intval(700)) {
   $THEME->sheets = array('800fw_layout','800fw_color','800fw_fonts');
  } else if (intval($SESSION->screenwidth) < intval(700)){
   $THEME->sheets = array('fw_layout','fw_color','fw_fonts');
  }

También he creado los 3 .css adicionales (800fw_layout.css, etc), cambiando groseramente los estilos para ver si funciona.

El problema es:

Estos 3 ficheros (800fw_layout, etc) nunca son llamadospor el contrario, siempre son llamados los .css originales.

Es como si el condicional diera siempre falso.

$SESSION->screenwidth  no puede ser visto por theme/xxxxx/config.php ?

Cuando miro la carpeta donde se guardan los ficheros de sesiónveo 2 ficheros (¿por qué?). El que se crea primero no contiene la variable "screenwidth", pero el segundo sí.

¿Qué estoy haciendo mal?

¿Hay otra forma de hacer lo que estoy planteando?

Muchísimas gracias.

Promedio de valoraciones: -