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

Problema con una vista

Estas en el tema de Problema con una vista en el foro de Drupal en Foros del Web. El caso es que quería hacer una vista en la que salgan todos los términos de un vocabulario llamado "Comarcas", y que de cada comarca ...

  #1 (permalink)  
Antiguo 11/01/2011, 05:40
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 10 meses
Puntos: 0
Problema con una vista

El caso es que quería hacer una vista en la que salgan todos los términos de un vocabulario llamado "Comarcas", y que de cada comarca aparezca un sólo artículo. El caso es que consigo que salgan todas las comarcas si elijo en el tipo de vista Term, pero no me sale opción de poner los artículos en la vista, y si escojo node, sí sale, pero las comarcas sin noticias no aparecen. ¿Alguna sugerencia?
  #2 (permalink)  
Antiguo 11/01/2011, 08:04
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Problema con una vista

Vos tenes un vocabulario llamado Comarcas, dentro del mismo tenes varios terminos, no?

Los articulos si o si tienen que tener un termino asociado, esa vista que vos usas (taxonomy/term) deberia funcionar! Limitas a 1 articulo y listo...

Sin embargo no entiendo la opcionde "poner los articulos en la vista", la vista muestra articulos, no pone nada... a que te referis con eso?

Saludos.
  #3 (permalink)  
Antiguo 11/01/2011, 08:42
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con una vista

Me refiero a que si escojo una vista tipo Term, pues en field no me deja elegir los nodos.

Además, si escojo en el tipo node, los términos que no tienen todavía relacionado ningún artículo no aparecen.
  #4 (permalink)  
Antiguo 11/01/2011, 09:25
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Problema con una vista

Te conviene usar la vista taxonomy/term/% que viene con el modulo Views integrado, solo la tenes que habilitar y listo, los nodos los elige solos, tenes que limitar a 1 nada mas.

No te conviene crear una vista de tipo term, al menos en mi opinion.

Saludos.
  #5 (permalink)  
Antiguo 11/01/2011, 09:39
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con una vista

¿Eso hace que aparezcan todos los términos del vocabulario?
  #6 (permalink)  
Antiguo 11/01/2011, 10:22
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Problema con una vista

pero vos queres que aparezcan todos los terminos de un vocabulario, o queres que aparezca 1 articulo por cada termino?
  #7 (permalink)  
Antiguo 11/01/2011, 11:05
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con una vista

Lo que quiero es que aparezcan todos los términos, incluso los que no tienen artículo, y los que tienen artículo que muestren uno solo, no sé si me explico.
  #8 (permalink)  
Antiguo 11/01/2011, 11:17
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Problema con una vista

Creo que eso no se puede hacer con una vista, me refiero al hecho de filtrar por cantidad ...
  #9 (permalink)  
Antiguo 11/01/2011, 11:26
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con una vista

¿Y hay alguna otra forma de hacerlo?
  #10 (permalink)  
Antiguo 11/01/2011, 13:52
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Problema con una vista

Algo que se me ocurrio es lo siguiente:

Creas una vista de tipo Term, donde te devuelven todos los terminos.
Haces un override del views-row (como se muestra cada resultado de la vista).
En ella usas la funcion taxonomy_select_nodes de la api de Drupal, que te devuelve todos los ids de nodos que contengan.

http://api.drupal.org/api/drupal/mod...select_nodes/7

Lo que tenes que hacer es imprimir el termino, y en caso de que haya articulos que contentan ese termino, entonces imprimis el primero, todo esto programandolo en PHP (sin usar Drupal).
Lo unico que veo de malo es como ordenar esos ids de nodos, ya que no se como los devuelven, podes ponerle un limite de ids (fijate el enlace que te puse).

Saludos.
  #11 (permalink)  
Antiguo 11/01/2011, 14:39
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con una vista

Gracias. ¿Cómo se hace lo del override?
  #12 (permalink)  
Antiguo 11/01/2011, 16:06
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con una vista

Bueno, ya lo encontré lo de override, pero no lo de taxonomy_select_nodes.
  #13 (permalink)  
Antiguo 11/01/2011, 17:10
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Problema con una vista

Fijate el enlace de arriba, es una funcion de la api de drupal que, dado el id del termino, te devuelve los nodos que lo llevan, es bastante facil de usar.

A esa funcion la tenes que usar cuando hagas el override de las vistas, y asi conseguiras el articulo, si es que existe (si no existe nada se supone que no tenes que imprimir mas que el nombre del termino)

Saludos.
  #14 (permalink)  
Antiguo 12/01/2011, 03:18
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con una vista

¿Podías ponerme una captura de pantalla? No sé a qué enlace te refieres. Para hacer el Override primero tengo que añadir un display, ¿cuál elijo?
  #15 (permalink)  
Antiguo 12/01/2011, 03:36
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Problema con una vista

No, no me refiero a eso, es lo siguiente:

Dentro de cada vista vos tenes una opcion "Theme", esta abajo.
Cuando haces click, te salen un listado de opciones, con sus respectivos nombres de ficheros usados por la vista. Mira la siguiente imagen:



Lo que te dije que tenes que hacer es crear un nuevo fichero php para el "Row Style output", que es lo que se muestra en cada Row (fila, en tu caso cada termino).

Lo creas, copias el contenido que hay por defecto, y lo pones en la carpeta de tu theme. Luego lo editas y programas en php, usando la funcion que te puse mas arriba ... ahi ya no tenes que usar Drupal, tenes que programar a mano, calculando si hay un articulo para el termino o no.

De todos modos creo que vos no sabes bien como usar la vista, te recomendaria que leas la documentacion del modulo, porque esto que queres hacer es muy avanzado, y, viendo tu planteamiento inicial, creo que buscabas una solucion sin programar nada...

Saludos.
  #16 (permalink)  
Antiguo 12/01/2011, 03:43
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con una vista

No, si hay que programar, se programa.

Hmmm, esto se puede hacer con una consulta SQL también, ahora que lo pienso. ¿Ayudarían algo las Q-views?

Por cierto, ¿dónde guardo el fichero creado?
  #17 (permalink)  
Antiguo 12/01/2011, 03:54
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Problema con una vista

En la foto que te puse, los nombre de ficheros en negrita son los usados por views a la hora de mostrar resultados, si el marcado es el primero, eso quiere decir que Views usa el fichero por defecto.

Los tenes que poner dentro de la carpeta de tu theme, el que estes usando.

Y de qviews no se nada =( , lo siento

Saludos.
  #18 (permalink)  
Antiguo 12/01/2011, 04:00
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con una vista

¿Editando uno de los ficheros en negrita o en uno nuevo? ¿Con qué nombre?
  #19 (permalink)  
Antiguo 12/01/2011, 04:11
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Problema con una vista

En uno nuevo, lo tenes que crear vos con los nombres que te recomienda el modulo. Fijate como yo cree en Row Style Output un fichero, y Views lo eligio (es el segundo).

Es muy dificil de explicar chateando esto .... te voy a dejar un tutorial, pq si no no vamos a acabar mas.

http://www.appnovation.com/over-ridi...queries-drupal

Saludos.
  #20 (permalink)  
Antiguo 12/01/2011, 04:44
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con una vista

Muchas gracias, a ver si me aclaro con este tutorial.
  #21 (permalink)  
Antiguo 24/01/2011, 04:10
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con una vista

Bueno, retomo el tema de las comarcas. Estuve leyendo el tutorial, y tengo alguna pregunta:

Donde pone que crear el archivo views-view-table—name-of-your-view--page.tpl.php dentro de mi carpeta de temas, ¿ese — se refiere a -- o a —? ¿Por carpeta de temas es el tema que estoy usando o la carpeta donde están los temas?
  #22 (permalink)  
Antiguo 24/01/2011, 15:51
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Problema con una vista

Dentro de cada display de las vistas, tenes la opcion "Theme", cuando haces click, te salen los diferentes nombres de ficheros para hacer override, los creas, pones el contenido que te da Drupal, colocas el fichero en la carpeta de tu tema, y le das a "Rescan Templates", asi reconoce tu fichero nuevo.

Luego de eso tan solo tenes que modificar el fichero a tu gusto, es bastante util la verdad.

Saludos.
  #23 (permalink)  
Antiguo 25/01/2011, 03:45
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con una vista

Encontré otra forma de hacerlo, así, probando cosas. Si en relaciones escojo Taxonomía: Nodo (que encuentra todos los nodos etiquetados con un término), me hace casi lo que quiero. Casi porque aparecen todos los artículos de cada una de las comarcas, y yo quería una noticia por cada comarca, cosa que conseguí con el estilo Grouping Field (With limit), pero la vista resultante con este estilo es bastante simple, fea, y yo buscaba algo parecido a Fluid Grid. ¿Hay algo parecido a Grouping Field (With Limit) pero con una estética más atractiva?
  #24 (permalink)  
Antiguo 25/01/2011, 04:45
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Problema con una vista

La estetica te la podes crear vos mismo desde theme, lo que te mencione antes.

Sin embargo, si buscas que Drupal haga de diseñador, lo tenes dificil...
  #25 (permalink)  
Antiguo 26/01/2011, 03:54
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con una vista

Bueno, ya está completo. De repente, me salió :|
  #26 (permalink)  
Antiguo 31/01/2011, 05:14
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con una vista

Bueno, como ahora quiere mi jefe que en vez de salir un artículo por comarca, salgan dos artículos, pues empecé a hacer lo del override, así que tengo este fichero creado: views-view-fields--Comarcas.tpl.php. Pero cuando le pongo lo deltaxonomy_select_nodes me sale este error:

  #27 (permalink)  
Antiguo 31/01/2011, 13:02
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Problema con una vista

Ponenos el codigo que pusiste, no tengo ni idea que puede ser.
  #28 (permalink)  
Antiguo 31/01/2011, 16:28
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con una vista

<?php
// $Id: views-view-fields.tpl.php,v 1.6 2008/09/24 22:48:21 merlinofchaos Exp $
/**
* @file views-view-fields.tpl.php
* Default simple view template to all the fields as a row.
*
* - $view: The view in use.
* - $fields: an array of $field objects. Each one contains:
* - $field->content: The output of the field.
* - $field->raw: The raw data for the field, if it exists. This is NOT output safe.
* - $field->class: The safe class id to use.
* - $field->handler: The Views field handler object controlling this field. Do not use
* var_export to dump this object, as it can't handle the recursion.
* - $field->inline: Whether or not the field should be inline.
* - $field->inline_html: either div or span based on the above flag.
* - $field->separator: an optional separator that may appear before a field.
* - $row: The raw result object from the query, with all data it fetched.
*
* @ingroup views_templates
*/
?>
<?php foreach ($fields as $id => $field): ?>
<?php if (!empty($field->separator)): ?>
<?php print $field->separator; ?>
<?php endif; ?>

<<?php print $field->inline_html;?> class="views-field-<?php print $field->class; ?>">
<?php if ($field->label): ?>
<label class="views-label-<?php print $field->class; ?>">
<?php print $field->label; ?>:
</label>
<?php endif; ?>
<?php
// $field->element_type is either SPAN or DIV depending upon whether or not
// the field is a 'block' element type or 'inline' element type.
?>
<<?php print $field->element_type; ?> class="field-content"><?php print $field->content; ?></<?php print $field->element_type; ?>>
</<?php print $field->inline_html;?>>
<?php endforeach; ?>


<?php
function taxonomy_select_nodes($tids = array(), $operator = 'or', $depth = 0, $pager = TRUE, $order = 'n.sticky DESC, n.created DESC') {
if (count($tids) > 0) {
// For each term ID, generate an array of descendant term IDs to the right depth.
$descendant_tids = array();
if ($depth === 'all') {
$depth = NULL;
}
foreach ($tids as $index => $tid) {
$term = taxonomy_get_term($tid);
$tree = taxonomy_get_tree($term->vid, $tid, -1, $depth);
$descendant_tids[] = array_merge(array($tid), array_map('_taxonomy_get_tid_from_term', $tree));
}

if ($operator == 'or') {
$args = call_user_func_array('array_merge', $descendant_tids);
$placeholders = db_placeholders($args, 'int');
$sql = 'SELECT DISTINCT(n.nid), n.sticky, n.title, n.created FROM {node} n INNER JOIN {term_node} tn ON n.vid = tn.vid WHERE tn.tid IN (' . $placeholders . ') AND n.status = 1 ORDER BY ' . $order;
$sql_count = 'SELECT COUNT(DISTINCT(n.nid)) FROM {node} n INNER JOIN {term_node} tn ON n.vid = tn.vid WHERE tn.tid IN (' . $placeholders . ') AND n.status = 1';
}
else {
$joins = '';
$wheres = '';
$args = array();
foreach ($descendant_tids as $index => $tids) {
$joins .= ' INNER JOIN {term_node} tn' . $index . ' ON n.vid = tn' . $index . '.vid';
$wheres .= ' AND tn' . $index . '.tid IN (' . db_placeholders($tids, 'int') . ')';
$args = array_merge($args, $tids);
}
$sql = 'SELECT DISTINCT(n.nid), n.sticky, n.title, n.created FROM {node} n ' . $joins . ' WHERE n.status = 1 ' . $wheres . ' ORDER BY ' . $order;
$sql_count = 'SELECT COUNT(DISTINCT(n.nid)) FROM {node} n ' . $joins . ' WHERE n.status = 1 ' . $wheres;
}
$sql = db_rewrite_sql($sql);
$sql_count = db_rewrite_sql($sql_count);
if ($pager) {
$result = pager_query($sql, variable_get('default_nodes_main', 10), 0, $sql_count, $args);
}
else {
$result = db_query_range($sql, $args, 0, variable_get('feed_default_items', 10));
}
}

return $result;
}
?>
  #29 (permalink)  
Antiguo 31/01/2011, 16:38
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Problema con una vista

Pq copias y pegas la funcion ahi? Se supone q esta definida ya en el modulo de Taxonomias, normal q te tire un error ....

Vos lo q tenes q hacer es usar esa funcion, no definirla!!
  #30 (permalink)  
Antiguo 01/02/2011, 04:11
 
Fecha de Ingreso: enero-2011
Mensajes: 104
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con una vista

¿Entonces, lo que tengo que poner es lo de

taxonomy_select_nodes($tids = array(), $operator = 'or', $depth = 0, $pager = TRUE, $order = 'n.sticky DESC, n.created DESC')

?

Me refiero sin el function antes de taxonomy_select_nodes.

Última edición por Gandolfillo; 01/02/2011 a las 04:29

Etiquetas: vistas
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 17:11.