Vista añadir where con argumento. Drupal views clauses argument

drupal.jpg
Solucionex
22
Ago 11
Nos encontramos con el siguiente escenario Un grupo de música tiene varias canciones. En el nodo de una canción queremos mostrar en un bloque todas las canciones del grupo excepto la que estamos escuchando. Views nos permite obtener todas las canciones del grupo y listarlas. Para "restar" la que estamos escuchando y que así no se repita en el listado de las relacionadas utilizamos views_query_alter: function slx_custom_views_query_alter(&$view, &$query) { if ($view->name == 'Mas_canciones' && $view->current_display=='block_3') { $cancion_actual = $view->args[0]; $query->where[0]['clauses'][] = "node.nid!=".$cancion_actual[1]; } } a la vista la estamos llamando desde el tpl del nodo de la canción con dos argumentos: el grupo y la canción actual. views_embed_view('Mas_canciones','block_3', array($node->field_cancion_grupo[0]['nid'], $node->nid)); Sencillo y rápido, hay dos o tres módulos que hacen cosas similares, pero preferimos utilizar la api de views. Espero que sirva de ayuda.