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

Obteber dato de view tpl

Estas en el tema de Obteber dato de view tpl en el foro de Drupal en Foros del Web. Como siempre este tipo de pregunta es uno de mis mayores quebraderos de cabeza con Drupal. Os cuento: Estoy modificando el template de una vista ...
  #1 (permalink)  
Antiguo 16/02/2014, 12:49
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 12 años, 6 meses
Puntos: 47
Obteber dato de view tpl

Como siempre este tipo de pregunta es uno de mis mayores quebraderos de cabeza con Drupal.

Os cuento: Estoy modificando el template de una vista y todo me funciona bien. El caso es que quiero incluir un condicional en el templete y necesito obtener un dato para realizarlo. Cuento un poco el código:

Para obtener los fields hago lo siguiente:

Código PHP:
Ver original
  1. $title = $fields['title']->content;
  2. $image = $fields['field_imagen_principal']->content;
  3. $precio = $fields['field_precio']->content;
  4. $tipo_destacado = $fields['field_tipo_destacado']->content;
  5. $texto = $fields['field_texto_producto_destacado']->content;


Entonces ya con esto voy incluyendo los campos (las variables, objetos, arrays o lo que sea, que nunca me aclaro con esto) en los divs correspondientes. Por ejemplo:

Código PHP:
Ver original
  1. <div class="producto">
  2.     <?php print $image;?>
  3.   </div>

Mi problema viene cuando quiero decir que, si $tipo_destacado es "tipo1" me cargue una cosa; que cuando sea "tipo2" cargue otra; y cuando sea "tipo3" cargue otra distinta.
¿Qué me ocurre? si hago un var_dump($tipo_destacado) me aparece lo siguiente

Código PHP:
Ver original
  1. string(45) "
  2. tipo1
  3. "

por lo que no me sirve hacer un:

Código PHP:
Ver original
  1. if ($tipo_destacado == "tipo1"):
  2. ...
  3. endif;


Porque en $tipo_destacado no está solo el dato en cuestión.

Mi pregunta es ¿cómo puedo extraer el dato solo (en este caso "tipo1") para poder utilizarlo en el condicional?

Espero haberme explicado, sé que no lo hago con mucha propiedad porque no conozco bien la terminología de programación pero espero que se entienda.

Saludos y muchas gracias
  #2 (permalink)  
Antiguo 17/02/2014, 01:56
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 2 meses
Puntos: 265
Respuesta: Obteber dato de view tpl

En tu tipo de contenido, que tipo de campo es "field_tipo_destacado"?

Saludos.
  #3 (permalink)  
Antiguo 17/02/2014, 02:34
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 12 años, 6 meses
Puntos: 47
Respuesta: Obteber dato de view tpl

Hola Mario, es una lista de texto (lista de selección) con tres valores.
  #4 (permalink)  
Antiguo 17/02/2014, 02:46
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 2 meses
Puntos: 265
Respuesta: Obteber dato de view tpl

La verdad es muy raro porque nunca he tenido problemas obteniendo valores de comboboxes..

Probá añadirle un strval a la variable, pero parece más un parche que una solución:

Código PHP:
Ver original
  1. $tipo_destacado = strval($fields['field_tipo_destacado']->content);
  #5 (permalink)  
Antiguo 17/02/2014, 05:28
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 12 años, 6 meses
Puntos: 47
Respuesta: Obteber dato de view tpl

Muchas gracias por tu ayuda Mario, aunque creo que no me expliqué bien.

No tengo problema en obtener los datos. Cuando hago:

Código PHP:
Ver original
  1. $tipo_destacado = $fields['field_tipo_destacado']->content;

(O con el otro método que me has dicho en tu último post), puedo imprimirlo sin problema. Meto un <?php print $tipo_destacado;?> y me imprime su valor dentro de un div con clase .field-content:

Código HTML:
Ver original
  1. <div class="field-content">
  2.                     tipo1
  3.                 </div>

Pero claro, ese $tipo_destacado que me sale resultante no es una variable con el dato solo, es un array , objeto o no sé yo (nunca me aclaro con eso) por lo que si le digo:

Código PHP:
Ver original
  1. if ($tipo_destacado == "tipo1"):
  2.  
  3. <p>Éste es el tipo 1</p>
  4.  
  5. endif;

Nunca me devuelve verdadero, puesto que no es solo el dato.

Resumiendo lo que lo que necesito es meterme dentro de ese array, objeto o lo que sea y extraer solamente el dato. Por eso digo que cuando le hago un

Código PHP:
Ver original
  1. cho "<pre>";var_dump($tipo_destacado); echo "</pre>

lo que me sale es esto:

Código PHP:
Ver original
  1. string(45) "
  2. tipo1
  3. "


llevo esta mañana también dándole vueltas (a parte de el fin de semana) y sigo sin ser capaz de hacerlo. En muchas ocasiones con templares de página, nodos taxonomías y demás no he tenido problema pero parece que con esto de las vistas es todo distinto, o yo por lo menos no me entero.

muchas gracias de nuevo
  #6 (permalink)  
Antiguo 17/02/2014, 06:10
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 2 meses
Puntos: 265
Respuesta: Obteber dato de view tpl

Ahhhh! Ahora entiendo! Lo que tenés que hacer es esto:

- En tu vista, en la parte de Mostrar (o Display si lo tenés en Inglés) 100% seguro has elegido Fields (de ahí que puedas mostrar campos).
- Debes pinchar en el botón de al lado "Opciones".
- Luego debes destildar el checkbox "Provide default field wrapper elements".

Con eso quitás todos los tags html que están en el campo. Pero los quitás de todos los campos que hayas agregado. No se si te afecte en algo.
En caso de que quieras quitarlo solo de ese campo, debés hacer esto:

- Editar el campo que quieras quitar.
- Dentro de la solapa "Style settings" te salen estas opciones: "Customize field HTML", "Customize label HTML" y "Customize field and label wrapper HTML".
- En todos, poné la opción "Ninguno" (None en Inglés).

Eso soluciona tu problema. Mi recomendación es la primera opción ya que limpiás mucho código HTML de Views, que, para lo que necesitamos lo justo, ayuda mucho a maquetar.

Saludos.
  #7 (permalink)  
Antiguo 17/02/2014, 06:38
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 12 años, 6 meses
Puntos: 47
Respuesta: Obteber dato de view tpl

SÍ!!!!!!!!!!!! Eso es!!!!!!!!!! qué alegría!!!!! Vaya desesperación tenía encima! la de horas que llevo con esta historia!!!

Y además de que me funcione para este caso, me viene de perlas para limpiar el html como me has dicho, que me molesta muchísimo esa cantidad de divs que no me valen para nada!!!!

Muchísimas, muchísimas gracias, de verdad!!!! te debo una comida o algo si un día coincidimos en algún sitio!!!! :)
  #8 (permalink)  
Antiguo 17/02/2014, 06:50
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 2 meses
Puntos: 265
Respuesta: Obteber dato de view tpl

Ya se puede decir que podés hacer las vistas como vos quieras.
Saber elegir los campos, extraerlos en el tpl y customizar los tags html que hay dentro de él te permite hacer vistas super potentes. Ni hablar si editas el tpl del "esqueleto" de la vista.
Hay un div con class "view-content" que nunca sirve para nada, y de verdad no es difícil quitarlo.

Con esto podés hacer webs que nadie sepa mirando el código fuente que está hecha con Drupal.

Saludos
  #9 (permalink)  
Antiguo 17/02/2014, 10:26
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 12 años, 6 meses
Puntos: 47
Respuesta: Obteber dato de view tpl

La verdad que es lo primero que hago metiéndome en los tpl de las vistas y todavía estoy bastante verde con ellas pero la verdad que sí se te abre otro buen abanico de posibilidades con ello. De hecho para lo que estoy haciendo me es imprescincible.

Antes usaba mucho el campo custom text, le añadía los fields ocultos a la vista y luego los maqueaba en html dentro de ese campo incluyendo los token de los campos. Esto también te permite customizar mucho la vista, pero en los .tpl puedes meterte más a fondo con php y eso.

De todos modos dejo el tema abierto hasta ver si soluciono un par de cosillas que estoy intentando solucionar por mi cuenta.

Saludos y gracias de nuevo

Última edición por JustinKO; 17/02/2014 a las 10:43
  #10 (permalink)  
Antiguo 17/02/2014, 11:07
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 2 meses
Puntos: 265
Respuesta: Obteber dato de view tpl

Yo hace unos meses escribí un artículo sobre esto, por si te interesa leerlo (no es mi intención hacer spam): http://www.marioaraque.com/articulo/...n-drupal-6-y-7

Saludos.
  #11 (permalink)  
Antiguo 17/02/2014, 11:21
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 12 años, 6 meses
Puntos: 47
Respuesta: Obteber dato de view tpl

claro que me interesa, muchas gracias!!!

Saludos

PD muy interesante, qué pena no haberlo pillado hace unos días, cuánto tiempo me habría ahorrado, aunque me ha aclarado cosas que todavía no tenía muy claras. Thanks

Última edición por JustinKO; 17/02/2014 a las 11:35

Etiquetas: dato, objetos, tpl, view
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 04:10.