Vistas embebidas

Cuando hay dos tipos de contenidos relacionados entre ellos, muchas veces nos gustaría que en el mismo nodo se pudiese ver también algunos datos de los relacionados.

Ésto se puede conseguir de varias formas, empezando por las vistas con argumentos y usando éstas en los paneles.. lo único que conlleva al problema de ir creando menús y paneles a medida.. Por lo que la mejor idea es la de las vistas embebidas.

Pasos para crear vistas embebidas (en este ejemplo el tipo de contentido "reunión" dependerá de "proyecto"):

  1. Crear el tipo de contenido proyecto.
  2. Crear el tipo de contenido reunión, y un campo tipo nodereference hacia "proyecto".
  3. Crear la vista de las reuniones, la que se unirá a los nodos tipo proyecto:
    • Tipo página
    • Cómo se quiera mostrar los datos, resumen, lista..
    • Argumentos: el campo nodereference
    • Filtro: Tipo de contenido- reunión
  4. Crear un node-proyectos.tpl.php e introducir el siguiente código
    <?php
       
    // cargar los  'metadata'
       
    global $current_view;
       
    // define el nid del nodo como el argumento
       
    $current_view->args[0]=$node->nid;
       
    // selecciona la vista para la view1
       
    $view1 = views_get_view('nombre_de_la_vista');                    
       
    // Añade clase
       
    print '<div class="clase_vista">';
         
    // El titulo de la vista incrustada
         
    print '<h2>' . 'Título' . '</h2>';
         
    // envia los argumentos de la vista y pinta el resultado en el contenido
         
    $vista = (views_build_view('embed', $view1, $current_view->args, false,
    false));
          if (
    $vista) { print $vista; }
          else { print
    'No hay ...'; }
        print
    '</div>';
     
    ?>

      

Y ya está, y de esta forma se pueden incrustar todas las vistas que se desean en los tipos de contenidos

En los casos en los que se añadan bastantes vistas (un ejemplo reuniones, documentos, tareas..) para poder acceder rápidamente al apartado que nos interese recomendamos la utilización de anclas.
Al comienzo del documento se pondrian los enlaces:

  <div class="proyectos_anclas" >
     <a href="#documentos">Documentos</a>
     <a href="#tareas">Tareas</a>
     <a href="#reuniones">Reuniones</a>
     <a href="#bonos">Bonos</a>
   </div>

y por encima del código de la vista se pondría la llamada
?> <div class="proyectos_anclas_titulos">  <a name="tareas">Tareas</a> </div> <?php

 

Basado en el artículo:
context-sensitive embedded views

Ejemplo:
Ejemplo vistas embebidas