Foros del Web » Programando para Internet » PHP »

Forzar ruta absoluta en EasyGallery

Estas en el tema de Forzar ruta absoluta en EasyGallery en el foro de PHP en Foros del Web. Hola a todos! Estoy tratando de implementar EasyGallery ( http://www.freitagmorgen.de/ ) en un sitio que tengo en varios idiomas pero no consigo que me funcione ...
  #1 (permalink)  
Antiguo 07/01/2011, 04:55
 
Fecha de Ingreso: mayo-2009
Ubicación: Fuerteventura
Mensajes: 324
Antigüedad: 15 años, 7 meses
Puntos: 19
Pregunta Forzar ruta absoluta en EasyGallery

Hola a todos!

Estoy tratando de implementar EasyGallery (http://www.freitagmorgen.de/) en un sitio que tengo en varios idiomas pero no consigo que me funcione sin tener que copiar la carpeta de imágenes en cada directorio de idioma. Me explico: hay tres sitios en tres idiomas, el español en la carpeta raiz y el italiano y el inglés en sendas carpetas dentro del raíz. Desde el archivo fotos.php de cada idioma llamo con un include al archivo galeria.php que está en el directorio raíz y desde este se buscan las imágenes en la carpeta picts que también está en el directorio raíz.

En el directorio raíz funciona sin problema pero desde las subcarpetas de los idiomas no encuentra la carpeta de imágenes porque supongo no la está llamando desde la raiz. He intentado hacer que la ruta sea absoluta pero mi pobre nivel de php no me da para entender correctamente este código. He intentado cambiar el PHP_SELF por PHP_HOST y darle la ruta absoluta a $root pero nada, siempre meda el mismo error de que no encuentra el directorio.

Gracias a todos de antemano y que tengan un buen año.

Salud!

Código PHP:
Ver original
  1. <?php
  2. // --begin editable region
  3. // Root directory
  4. $root_dir = "picts";
  5. // Thumbnail Columns
  6. $columns = 6;
  7. // Size of thumbnails in pixel
  8. $thumbwidth = 100;
  9. // Slideshow 0=no 1=yes
  10. $slideshow = 0;
  11. // --end editable region
  12. //##################################################################//
  13. // Do not change anything by now unless you know what you are doing!
  14. ?>
  15. <?php
  16. // --begin preprocessing
  17. $phpself = $_SERVER['PHP_SELF'];
  18. extract($_POST);
  19. // filetypes
  20. $filetypes = array("jpg", "jpeg");
  21. $k = sizeof($filetypes);
  22. for ($i=0; $i<$k; $i++) {
  23.   $filetypes[] = strtoupper($filetypes[$i]);
  24. }
  25. // extract local image folders
  26. if (strpos($root_dir,'www')===0)
  27. {
  28.   $root_dir = 'http://'.$root_dir;
  29. }
  30. $local = parse_url($root_dir);
  31. if (strpos($root_dir,'http://')===0)
  32. {
  33.   foreach (count_chars($phpself,1) as $i=>$val)
  34.   {
  35.     if (chr($i)=='/')
  36.     {
  37.       $root_dir = substr($local['path'],1);
  38.       for ($j=1;$j<$val;$j++)
  39.         $root_dir='../'.$root_dir;
  40.     }
  41.   }
  42.   if (strpos($root_dir,$local['path'])===0)
  43.   {
  44.     $root_dir = ".";
  45.   }
  46. }
  47. // scanning directory for folders and check if they contain image files
  48. if (!is_dir($root_dir))
  49. {
  50.   printError("Couldn't find a root directory.");
  51. }
  52. $root_handle = opendir($root_dir);
  53. while ($dirname = readdir($root_handle))
  54. {
  55.   $var1 = strcmp($dirname,'.');
  56.   $var2 = strcmp($dirname,'..');
  57.   $var3 = is_dir($root_dir.'/'.$dirname);
  58.   if (($var1!=0) && ($var2!=0) && ($var3==1))
  59.   {
  60.     $dir_handle = opendir($root_dir.'/'.$dirname);
  61.     $postmp = 0;
  62.     while ($filename = readdir($dir_handle))
  63.     {
  64.       for ($i=0;$i<sizeof($filetypes);$i++)
  65.       {
  66.         $postmp = strpos($filename, $filetypes[$i]);
  67.         if ($postmp>0)
  68.         {
  69.           $folders[] = $root_dir.'/'.$dirname;
  70.           break 2;
  71.         }
  72.       }
  73.     }
  74.     closedir($dir_handle);
  75.   }
  76. }
  77. if (!$folders)
  78. {
  79.   printError("Searched folders don't contain any image! Please change the \$root_dir.");
  80. }
  81. // !!! if you don't want your folders in reverse order change rsort() to sort()
  82. rsort($folders);
  83. // set initial variable $ordner
  84. if (!isset($ordner))
  85.   $ordner = $folders[0];
  86. // scanning directories for image files
  87. if (is_dir($ordner)){
  88.   $dir_handle = opendir($ordner);
  89.   while ($filename = readdir($dir_handle))
  90.   {
  91.     for ($i=0; $i<sizeof($filetypes); $i++)
  92.     {
  93.       $pos = strpos($filename, $filetypes[$i]);
  94.       $var1 = strcmp($filename,'.');
  95.       $var2 = strcmp($filename,'..');
  96.       $var3 = is_file($ordner.'/'.$filename);
  97.       if (($var1 != 0) && ($var2 != 0) && ($var3 == 1) && ($pos > 0))
  98.       {
  99.         $files[] = $filename;
  100.       }
  101.       if ($filename=="thumbnails")
  102.       {
  103.         $thumbs = 1;
  104.       }
  105.     }
  106.   }
  107.   sort($files);
  108.   $size = sizeof($files);
  109.   closedir($dir_handle);
  110.   closedir($root_handle);
  111. }
  112. else
  113. {
  114.   printError("No Folders found. Please copy your image folders to the location specified in the \$root_dir.");
  115. }
  116. // --end preprocessing
  117. ?>
  #2 (permalink)  
Antiguo 07/01/2011, 06:33
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 3 meses
Puntos: 331
Respuesta: Forzar ruta absoluta en EasyGallery

Hola Alberto, el siguiente código te permite saber en cada momento la ruta absoluta.
Así, puedes ejecutar el código al comenzar el programa, guardarlo en una constante y luego hacer referncia siempre a este constante, algo así:

Código PHP:
/**
 * Cálculo del path para las inclusiones
 */
$p explode("/"$_SERVER['SCRIPT_NAME']);

    if(
count($p)<=3){
    
$path "";
    }
    if(
count($p)>3){
        
$path "../";
    }
    
/**
 * EL path absoluto de la aplicación, se utilizará para que las inclusiones no fallen en ningún nivel
 *
 */
define("ABS_PATH"$path);

//Incluir una imagen
$img ABS_PATH."/img/hola.png"
A ver si te sirve, saludos
  #3 (permalink)  
Antiguo 07/01/2011, 07:03
 
Fecha de Ingreso: mayo-2009
Ubicación: Fuerteventura
Mensajes: 324
Antigüedad: 15 años, 7 meses
Puntos: 19
Respuesta: Forzar ruta absoluta en EasyGallery

Gracias por tu respuesta repara2, pero al definirle la ruta absoluta a $root_dir me construye los enlaces de la siguiente forma y no carga las imágenes porque utiliza la ruta absoluta para construir las rutas de las imágenes y las direcciones de los enlaces:

Código HTML:
Ver original
  1. <a href="http://www.forosdelweb.com/f18/picts/gallery/01.jpg" rel="lightbox-"../picts/gallery><img src="http://www.forosdelweb.com/f18/picts/gallery/thumbnails/tn_01.jpg" class="thumbnails" alt="01.jpg"></a>

Salud!
  #4 (permalink)  
Antiguo 07/01/2011, 07:34
 
Fecha de Ingreso: mayo-2009
Ubicación: Fuerteventura
Mensajes: 324
Antigüedad: 15 años, 7 meses
Puntos: 19
De acuerdo Respuesta: Forzar ruta absoluta en EasyGallery

Al final en la linea 4 añadí esto y funcionó, ya lo había intentado antes pero se ve que no lo hice correctamente (esto calculo que debe ser una chapuza pero mi nivel no da para más):

Código PHP:
Ver original
  1. $host  = $_SERVER['HTTP_HOST'];
  2. $base = "http://" . $host . "/picts"; //picts es mi directorio de imágenes
  3. // Root directory
  4. $root_dir = $base;

Uf, php puede conmigo, me queda muuucho por andar

Gracias por vuestra atención y ayuda.

Salud!

Última edición por AlbertoGarcia; 07/01/2011 a las 07:39

Etiquetas: easygallery, ruta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:20.