Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/08/2012, 10:29
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Pasar valor a archivo js

Para procesar archivos js (ó css) como php, tenés 2 opciones básicas, la primera y más complicada es renombrar tus archivos como php, en ese caso, la estructura correcta de tu archivo debe ser

Código PHP:
Ver original
  1. <?php
  2. header("Content-Type: text/javascript;charset=utf-8");
  3. ?>
  4. /// el resto de tu script
  5. function x(){
  6. alert('hola');
  7. }

Si tuvieses que pasar parámetros x get

Código PHP:
Ver original
  1. <?php
  2. header("Content-Type: text/javascript;charset=utf-8");
  3. ?>
  4. /// el resto de tu script
  5. function x(){
  6. var a = '<?php echo $_GET['variable']; ?>';
  7. alert(a);
  8. }

Esto puede mejorarse, agregando compresión gzip

Código PHP:
Ver original
  1. <?php
  2. header("Content-Type: text/javascript;charset=utf-8");
  3. ob_start("ob_gzhandler");
  4. ?>
  5. /// el resto de tu script
  6. function x(){
  7. var a = '<?php echo $_GET['variable']; ?>';
  8. alert(a);
  9. }

Y finalmente, si necesitás cachear el archivo

Código PHP:
Ver original
  1. <?php
  2. $archivo = $_SERVER['SCRIPT_FILENAME'];
  3. $expira = 60 * 60 * 24 * 365;
  4. $ExpStr = "Expires:" . gmdate("D,d M Y H:i:s",time() + $expira) . " GMT";
  5. $ft = filemtime($archivo);
  6. $time = time() - $ft;
  7. $eTag = "ci-".md5($archivo.$ft);
  8. header("Content-Type: text/javascript;charset=utf-8");
  9. header("Cache-Control: public, max-age=$expira");
  10. header($ExpStr);
  11. header('Last-Modified: '.gmdate('D, d M Y H:i:s', $ft).' GMT');
  12. header('ETag: "'.$eTag.'"');
  13. ob_start("ob_gzhandler");
  14. ?>
  15. /// el resto de tu script
  16. function x(){
  17. var a = '<?php echo $_GET['variable']; ?>';
  18. alert(a);
  19. }
Para los css la técinca es similar salvo que el content-type debe se text/css

La otra alternativa, puede resultar más simple o no, dependiendo de como esté configurado el php en tu apache
Si está como modulo, dejás los js y css como están, y en tu .htaccess pones
AddType application/x-httpd-php .js .css

Si tu php está instalado como cgi ó FastCgi, tendrás que ir al panel de control de tu server,y, aunque la opción no esta siempre disponible, habilitar los handlers necesarios para que las extensiones js y css sean procesadas como php
Una vez conseguido esto, la compresión y el cacheado los podés conseguir activando mod_deflate y los headers apropiados.

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.