Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/12/2014, 05:45
jorcom
 
Fecha de Ingreso: noviembre-2013
Mensajes: 23
Antigüedad: 10 años, 5 meses
Puntos: 4
problema con rutas en funcion smarty

Hola,

he creado un plugin para smarty, en el cual le paso una ruta como parametro, y comprueba si existen imagenes dentro de esa ruta, en tal caso, guarda los valores en otro array. I dicho array lo utilizo en una plantilla smarty.

Hasta aquí todo bien, el problema es que cuando recorro el array desde la plantilla (.tpl), me muestra los resultados de la otra carpeta al mismo nivel de la que recibe como parametro.

?¿? Llevo un par de días peleándome con esto y no consigo sacarlo.

Os pongo el código a ver si alguien ve donde mes estoy equivocando.


Código PHP:
function smarty_function_getImages($params, &$smarty){
   if(!isset(
$params['directory'])) {
    
trigger_error("Error, path is needed."E_USER_NOTICE);
    return;
   }else{
      if(
is_dir($params['directory'])){
        
$aux scandir($params['directory']);
        
$aux2 = array();

        for(
$i 0$i<sizeof($aux); $i++){
          if(!
is_dir($aux[$i])){
            if(
substr($aux[$i], -3) == "jpg"){
            echo 
$aux[$i];
            
array_push($aux2$aux[$i]);
            }
          }
        }  
        
      
$smarty->assign('rightItems',$aux2);

      }else{
        
trigger_error("Invalid folder."E_USER_NOTICE);
        return 
"Invalid folder.";
      }

   }
   return;

Y este el código que pongo en la plantilla, donde llamo a la funcion y la recorro con un foreach.

Código PHP:
{getImages directory="img/cms/$path/rightItems"}

{foreach 
from=$rightItems item=foo}
    {
$foo}<br />
{/foreach} 
Para terminar de entender mi problema, pongamos que tengo esta estructura de carpetas:

Carpeta_Padre
Carpeta_Hijo1
Imagen1.jpg
Imagen2.jpg
etc...
Carpeta_Hijo2
Imagen1.jpg
Imagen2.jpg
etc...
Pues al ejecutar el código, si le paso la ruta de "Carpeta_Hijo1", me muestra las imagenes que hay dentro de "Carpeta_Hijo2"


Alguien tiene alguna idea?

Gracia por adelantado