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

[SOLUCIONADO] Duda eterna con arrays, objetos, template, nodo teaser…

Estas en el tema de Duda eterna con arrays, objetos, template, nodo teaser… en el foro de Drupal en Foros del Web. Hola a todos, Hoy traigo una duda que me persigue desde siempre y que en otras ocasiones a base de prueba-error prueba-error conseguí solucionar pero ...
  #1 (permalink)  
Antiguo 31/01/2014, 06:11
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 12 años, 6 meses
Puntos: 47
Duda eterna con arrays, objetos, template, nodo teaser…

Hola a todos,

Hoy traigo una duda que me persigue desde siempre y que en otras ocasiones a base de prueba-error prueba-error conseguí solucionar pero en esta ocasión no lo consigo.

Sé que es algo básico en programación, pero no soy programador y veces estas cosas me pueden. Al grano:

Estoy con un catálogo de productos, que lo he seccionado con taxonomías. El caso es que cuando abro la página de la taxonomía en cuestión, supongamos "aspiradores", me aparecen los campos de la taxonomía y debajo el listado en formato teaser (con el leer más) de productos que contiene esa taxonomía.
Lo que me aparece es un listado con el nombre del producto, el resumen del cuerpo de texto y el leer más. Y lo que necesito es el nombre y la imagen solamente.

Borrar el resumen y el leer más lo he hecho mediante el tpl del node en cuestión (node--producto.tpl.php), he borrado las lineas de código del "leer más" y con hide($content['body']); oculto todo la descripción.

Mis dudas son.
  1. No sé si hay alguna manera de configurar que el teaser te añada otro campo que no añada por defecto, en este caso el de la imagen
  2. En caso de no poderse hacer, estoy trasteando con el tpl y aquí está mi pregunta de programación: ¿cómo obtengo un dato de este array/objeto o lo que sea que nunca lo tengo claro?

Hago un var_dump($content); del teaser y me aparece lo siguiente (he borrado mucho, no hace falta que lo leáis todo):

Código PHP:
Ver original
  1. array(3) {
  2.   ["links"]=>
  3.   array(6) {
  4.    
  5.     // Aquí he borraddo los 6 arrays para simplificar esto
  6.    
  7.   }
  8.   ["body"]=>
  9.   array(17) {
  10.     ["#theme"]=>
  11.     string(5) "field"
  12.     ["#weight"]=>
  13.     int(0)
  14.     ["#title"]=>
  15.     string(12) "Descripción"
  16.     ["#access"]=>
  17.     bool(true)
  18.     ["#label_display"]=>
  19.     string(6) "hidden"
  20.     ["#view_mode"]=>
  21.     string(6) "teaser"
  22.     ["#language"]=>
  23.     string(3) "und"
  24.     ["#field_name"]=>
  25.     string(4) "body"
  26.     ["#field_type"]=>
  27.     string(17) "text_with_summary"
  28.     ["#field_translatable"]=>
  29.     string(1) "0"
  30.     ["#entity_type"]=>
  31.     string(4) "node"
  32.     ["#bundle"]=>
  33.     string(8) "producto"
  34.    ["#object"]=> // ___________Este es el objeto_____________*********
  35.     object(stdClass)#127 (39) {
  36.      ["vid"]=>
  37.       string(1) "9"
  38.       ["uid"]=>
  39.       string(1) "1"
  40.       ["title"]=>
  41.       string(6) "aspiraddorXXFG35"
  42.       ["log"]=>
  43.       string(0) ""
  44.       ["status"]=>
  45.       string(1) "1"
  46.       ["comment"]=>
  47.       string(1) "1"
  48.       ["promote"]=>
  49.       string(1) "0"
  50.       ["sticky"]=>
  51.       string(1) "0"
  52.       ["nid"]=>
  53.       string(1) "9"
  54.       ["type"]=>
  55.       string(8) "producto"
  56.       ["language"]=>
  57.       string(2) "es"
  58.       ["created"]=>
  59.       string(10) "1383678159"
  60.       ["changed"]=>
  61.       string(10) "1389138221"
  62.       ["tnid"]=>
  63.       string(1) "0"
  64.       ["translate"]=>
  65.       string(1) "0"
  66.       ["revision_timestamp"]=>
  67.       string(10) "1389138221"
  68.       ["revision_uid"]=>
  69.       string(1) "1"
  70.       ["body"]=>
  71.       array(1) {
  72.         ["und"]=>
  73.         array(1) {
  74.           [0]=>
  75.           array(5) {
  76.             ["value"]=>
  77.             string(276) "
  78.  
  79. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam lorem risus, ultrices eget dictum sit amet, pretium vel mi. Morbi ac facilisis turpis. Nam ut quam at dolor condimentum viverra a et lacus. Sed eu dictum est, ac luctus erat. Sed sollicitudin tincidunt nisi, et ullamcorper quam rutrum non.
  80.  
  81. "
  82.             ["summary"]=>
  83.             string(0) ""
  84.             ["format"]=>
  85.             string(13) "filtered_html"
  86.             ["safe_value"]=>
  87.             string(275) "
  88.  
  89. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam lorem risus, ultrices eget dictum sit amet, pretium vel mi. Morbi ac facilisis turpis. Nam ut quam at dolor condimentum viverra a et lacus. Sed eu dictum est, ac luctus erat. Sed sollicitudin tincidunt nisi, et ullamcorper quam rutrum non.
  90.  
  91. "
  92.             ["safe_summary"]=>
  93.             string(0) ""
  94.           }
  95.         }
  96.       }
  97.      ["field_imagen_principal"]=> // ___________Este es el campo______________****
  98.       array(1) {
  99.         ["und"]=>
  100.         array(1) {
  101.           [0]=>
  102.           array(13) {
  103.             ["fid"]=>
  104.             string(2) "86"
  105.             ["alt"]=>
  106.             string(0) ""
  107.             ["title"]=>
  108.             string(0) ""
  109.             ["width"]=>
  110.             string(3) "255"
  111.             ["height"]=>
  112.             string(3) "264"
  113.             ["uid"]=>
  114.             string(1) "1"
  115.             ["filename"]=>
  116.             string(10) "aspiradorXXFG35.gif"
  117.             ["uri"]=>
  118.             string(47) "public://imagenes_catalogo/productos/aspiradorXXFG35"
  119.             ["filemime"]=>
  120.             string(9) "image/gif"
  121.             ["filesize"]=>
  122.             string(5) "17713"
  123.             ["status"]=>
  124.             string(1) "1"
  125.             ["timestamp"]=>
  126.             string(10) "1385026034"
  127.             ["rdf_mapping"]=>
  128.             array(0) {
  129.             }
  130.           }
  131.         }
  132.       }
  133.      
  134. }


Sé sin problemas obtener datos del primer "nivel" (no se cómo lo llamáis), ejemplo:

Código PHP:
Ver original
  1. print render($content['body']["#title"]);

Y me imprimiría "descripcion". Pero lo que no entiendo cómo se hace y no soy capaz de hacer después de mucho darle vueltas, es hacer un render al campo ["field_imagen_principal"] que está dentro del [#object] que os he marcado con comentarios.

Siempre me da un mensaje de error
Fatal error: Cannot use object of type stdClass as array in ……

Siento la extensión de mi mensaje pero no he podido resumirlo más para explicarme, y de vedad, le he dado muchas, muchas, muchas vueltas antes de preguntar…

Un saludo y muchas gracias
  #2 (permalink)  
Antiguo 31/01/2014, 06:51
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: Duda eterna con arrays, objetos, template, nodo teaser…

Pero @JustinOK, si querés customizar el teaser debés editar la presentación de tu tipo de contenido.

En la solapa "Gestionar presentación" tenés un apartado, arriba a la derecha, que te pone "Resumen", y si entras ahí podés gestionar los campos que te aparecerán en el teaser. Eso no te sirve?

Y en caso de querer customizar las páginas de taxonomías podés usar Views, habilita la vista taxonomy/term/% y agregás los campos que te hagan falta.

Creo que está bien saber de programación para usar Drupal, pero estás entrando en un problema que quizás no requiera solución tocando código.

Saludos.
  #3 (permalink)  
Antiguo 31/01/2014, 07:26
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 12 años, 6 meses
Puntos: 47
Respuesta: Duda eterna con arrays, objetos, template, nodo teaser…

Madre mía!!!!!! lo mío es de psiquiatrico!!!!! No recuerdo haber visto nunca esa pestaña de resumen!!!
no te puedes ni imaginar la de vueltas que ha dado (hablo de días)!!!

además, otra de las maneras con las que he estado trasteando para buscar una alternativa era con la vistas de taxonomía y no era capaz de conseguirlo, y supongo que la solución también está en lo que me has puesto.

Joder, muchísimas gracias y disculpad mi grandísimo despiste (o atontamiento mejor dicho).

Última edición por JustinKO; 31/01/2014 a las 07:32

Etiquetas: arrays, nodo, objetos, template
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 01:06.