Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » Drupal »

mostrar bloque dependiendo del filter exposed

Estas en el tema de mostrar bloque dependiendo del filter exposed en el foro de Drupal en Foros del Web. Hola amigos, tengo una duda que no consigo resolver: tengo una vista con unos filtros marcados como exposed filter, por ejemplo un filtro tipo de ...
  #1 (permalink)  
Antiguo 16/01/2011, 22:21
Avatar de codigoflecha  
Fecha de Ingreso: noviembre-2004
Mensajes: 325
Antigüedad: 19 años, 6 meses
Puntos: 3
mostrar bloque dependiendo del filter exposed

Hola amigos,

tengo una duda que no consigo resolver:
tengo una vista con unos filtros marcados como exposed filter, por ejemplo un filtro tipo de vivienda con los valores posibles Viviendas, Locales, Oficinas, etc.

Lo que necesito es en un bloque con PHP CODE mostrar un bloque dependiendo del valor que ha filtrado el usuario por ej. Viviendas

la url que genera ese filtrado es por ejemplo:
www.dominio.com/resultado?tipo_de_inmueble[]=Viviendas

Si hago un print en pantalla para recuperar los valores lo hago así:
Código PHP:
<?php
      
foreach ($exposed_filters as $filter => $value) {
           
$array2 $value;
           foreach(
$array2 as $filters => $value){
     
// end foreach          
        
if ($value) {
          print 
"<div class='filter'><div class='name'>" $filter ":</div>";
          print 
"<div class='value'>" $value "</div></div>";
        }
        }
      }
Generandome un print con tipo_de_inmueble:Viviendas


Así que pruebo con en el bloque con PHP CODE algo así, pero me da error de foreach:
Código PHP:
<?php
      
foreach($exposed_filters as $filter => $value) {
           
$array2 $value;
           foreach(
$array2 as $filters => $value){
               return 
$value;
    }               
      }  
      if (
$value == 'Viviendas') {   
    return 
TRUE;  
    }  
    return 
FALSE;   
?>
Alguna idea, please...
Saludos
  #2 (permalink)  
Antiguo 17/01/2011, 06:23
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 14 años, 6 meses
Puntos: 265
Respuesta: mostrar bloque dependiendo del filter exposed

Tenes que crear 3 bloques no? Se mostrara uno de ellos en base a la url, resumiendo...

La variable $_GET['q'] te devuelve la url actual, entonces, en el codigo PHP del bloque extraes su valor, y en base a lo que valga imprimis un bloque o no.

Espero que te sirva.

Saludos.
  #3 (permalink)  
Antiguo 17/01/2011, 08:37
Avatar de codigoflecha  
Fecha de Ingreso: noviembre-2004
Mensajes: 325
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: mostrar bloque dependiendo del filter exposed

Gracias Mario,

algún ejemplo sencillo de como recoger los valores de los filtros del $_GET['q'] ?

Es que la URL puede ser de 3 exposed filters por ej:

www.midominio.com/resultado?operacion[]=Comprar&tipo_de_inmueble[]=Viviendas&ubicacion[]=19

Sólo necesito recuperar el valor de tipo_de_inmueble para mostrar un bloque u otro.

Gracias de antemano
  #4 (permalink)  
Antiguo 17/01/2011, 10:22
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 14 años, 6 meses
Puntos: 265
Respuesta: mostrar bloque dependiendo del filter exposed

Probaste si existe la variable $_GET["ubicacion"] ? Deberia existir...
  #5 (permalink)  
Antiguo 17/01/2011, 14:27
Avatar de codigoflecha  
Fecha de Ingreso: noviembre-2004
Mensajes: 325
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: mostrar bloque dependiendo del filter exposed

Si, me devuelve Array ya que es un select. Pero me veo igual que al principio tengo que recuperar ese valor del array.

Saludos!!
  #6 (permalink)  
Antiguo 17/01/2011, 15:12
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 14 años, 6 meses
Puntos: 265
Respuesta: mostrar bloque dependiendo del filter exposed

Dentro del PHP CODE del bloque, es imposible que puedas sacar valores de otro modulo.

Proba poner esta sentencia:

Código PHP:
Ver original
  1. $view = views_get_current_view();

Y fijate que contiene esa variable a la hora de hacer el filtro, quizas tenga algun valor referenciando al expose que haces.

Saludos.
  #7 (permalink)  
Antiguo 17/01/2011, 15:17
Avatar de codigoflecha  
Fecha de Ingreso: noviembre-2004
Mensajes: 325
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: mostrar bloque dependiendo del filter exposed

no, estaba haciendo un print en la página del resultado, no en el bloque claro.
  #8 (permalink)  
Antiguo 17/01/2011, 15:28
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 14 años, 6 meses
Puntos: 265
Respuesta: mostrar bloque dependiendo del filter exposed

Te sirve eso? De todos modos deberias poder sacar el valor desde la url, me parece muy extraño que no se pueda!
  #9 (permalink)  
Antiguo 17/01/2011, 15:50
Avatar de codigoflecha  
Fecha de Ingreso: noviembre-2004
Mensajes: 325
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: mostrar bloque dependiendo del filter exposed

Hola de nuevo Mario,

perdona, creo que ya después de días con esto, estoy algo espeso.

Recapitulamos, cuando dices esto:
Cita:
La variable $_GET['q'] te devuelve la url actual, entonces, en el codigo PHP del bloque extraes su valor, y en base a lo que valga imprimis un bloque o no.
Como estraigo el valor del filtro y imprimo un bloque o no?
O como veo en un bloque con PHP CODE si existe la variable?

Saludos
Javier

Última edición por codigoflecha; 17/01/2011 a las 15:57
  #10 (permalink)  
Antiguo 17/01/2011, 16:17
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 14 años, 6 meses
Puntos: 265
Respuesta: mostrar bloque dependiendo del filter exposed

Mira, te lo explico bien detalladamente, pq yo no soy de ponerme espeso tan facil:

Segun nos comentas, vos tenes una vista en la cual tenes algunos filtros expuestos. En base al valor del filtro, vos mostras un bloque o no, cierto?

Bueno, lo que te propuse yo es lo siguiente:

- Suponiendo que tenes varios bloques por mostrar, y que los mismos dependen del valor del filtro, entonces podes jugar con la URL que muestra Drupal a la hora de filtrar. Te muestro el ejemplo en la siguiente URL: http://www.aprendetrading.com/usuarios
Si en el cuadro de texto de "buscar usuarios" pones un nombre cualquiera, la url cambiara a http://www.aprendetrading.com/usuarios?uid=usuario
... donde usuario es el nombre de usuario que hayas puesto en el filtro (ese campo es el id del usuario como filtro expuesto).

- A que voy con esto? A que vos, desde la validacion con PHP que haces para la visibilidad del bloque, podes obtener esa ruta, como? con la variable $_GET["q"], que tiene Drupal para mostrar la URL COMPLETA. Ahora bien, si vos solo quisieras obtener el valor "usuario" de la ruta, entonces la variable $_GET["uid"] deberia funcionar, y eso fue lo que te dije que pruebes, yo no puedo hacer todo tu ejercicio, y darte las respuestas correctas a todo suponiendo nada mas....

- Si ese valor te devuelve un array, da igual!! pq ahi estas usando PHP! Entonces podes jugar con los valores de ese vector, obtenerlos, y hacer un IF, siempre dentro de la validacion PHP del bloque.

- Lo que podes hacer tambien es un override del bloque, y hacer la validacion dentro del tpl del bloque, pero creo que eso es mas avanzado.

Espero que te haya servido.

Saludos.
  #11 (permalink)  
Antiguo 17/01/2011, 21:14
Avatar de codigoflecha  
Fecha de Ingreso: noviembre-2004
Mensajes: 325
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: mostrar bloque dependiendo del filter exposed

Hola Mario,

ok, ahora si te he entendido, he puesto lo siguiente para que el bloque se muestre si el valor de tipo_de_inmueble es Viviendas:

Código PHP:
<?php 
if (arg(0) == 'xsearch')  {  
    
$a=(array_values($_GET['tipo_de_inmueble']));
    if (
in_array("Viviendas",$a)) {
  return 
TRUE
    }  
    return 
FALSE;
    }
    
?>
ahora me funciona correctamente.

Gracias!! estaba realmente espeso y me has dado una guía de como resolverlo, te debo una.

Si tienes tiempo y por curiosidad, este ya lo dejo así, pero si por ejemplo quisiera sólo mostrar algunos exposed filters de un bloque dependiendo del valor seleccionado del filter exposed, lo podría hacer con un override del bloque y luego filtrar en el .tpl, en este caso como sería la plantilla de nombre me refiero? la plantilla del bloque o del exposed-filter?

Saludos!!!!
Javier
  #12 (permalink)  
Antiguo 18/01/2011, 01:45
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 14 años, 6 meses
Puntos: 265
Respuesta: mostrar bloque dependiendo del filter exposed

Vos creas un bloque, luego averiguas su id, para hacerlo, entras a "configurar", y en la ruta del mismo sale la id.

Suponiendo que la id del bloque es X, haces una copia de block.tpl.php y la renombras a block-block-x.tpl.php ... la variable $content contiene el contenido (lo que hayas puesto en el cuerpo), y podes hacer validaciones con php de los exposed filters.

Saludos.
  #13 (permalink)  
Antiguo 18/01/2011, 03:59
Avatar de codigoflecha  
Fecha de Ingreso: noviembre-2004
Mensajes: 325
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: mostrar bloque dependiendo del filter exposed

Hola Mario,

eso ya lo se, tal vez no he formulado bien la pregunta, como no urge ahora y ya te he preguntado bastante lo dejamos para otra ocasión.

Gracias
Saludos!!

Etiquetas: dependiendo, bloques, filtros
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 00:58.