Estoy tratando de obtener una unión de los nodos y comentarios de un usuario ordenados por "fecha de publicación". Esta publicación enlaza con proyectos de sandbox para D6 pero no hay nada para 7.
Esta publicación tiene un ejemplo del uso de hook_views_pre_execute () y un SQL UNION en D6. Esto no funciona para D7 con vistas 3.
Me encontré con el comentario de Merlinofchaos
Como ahora estamos utilizando el nuevo generador de consultas de Drupal, la consulta es un objeto SelectQuery que deberá modificar o reemplazar. Consulte la nueva capa de base de datos de Drupal 7 para obtener más información.
¿Alguien tiene un ejemplo de cómo hacer esto o cualquier otra solución para combinar dos puntos de vista?
Respuestas:
Aquí hay un ejemplo funcional y probado:
Esto funciona para la mayoría de las vistas. Sin embargo, algunos complementos de estilo pueden hacer cosas sofisticadas que no funcionarán con esta técnica (módulo de calendario que te estoy mirando).
fuente
Puede usar el módulo de controladores adicionales Vistas para generar consultas SQL UNION desde dos vistas / pantallas diferentes.
Un tutorial detallado en drupal.org aquí
https://www.drupal.org/project/views_extra_handlers
fuente
Terminé usando db_query () para crear las UNIONES SQL y luego representarlo en un diseño de tabla que incluye localizadores que usan la función theme ().
Para el usuario, parece vistas predeterminadas. El otro beneficio fue que pude optimizar mucho la consulta. Estoy mostrando "las actividades de mis amigos" y si usaras vistas para eso, crearía una lista de tus amigos y la usaría en una cláusula SQL "IN" que es muy lenta si tienes más de 50 o 100 registros.
Podría limitar esa lista de amigos solo a los que han iniciado sesión en el sitio en los últimos x días.
Este es un ejemplo de código:
fuente
Para referencia futura, así es como combiné dos vistas basándose en la misma tabla. Los mismos principios también deberían aplicarse a las vistas basadas en diferentes tablas con la misma cantidad de campos.
En el siguiente caso, solo se selecciona id, ya que el formato se establece en la entidad representada. Pero si va con campos, siempre puede agregar campos ficticios adicionales a la consulta que tiene menos campos como agregué la marca de tiempo a continuación.
fuente
Me imagino que es algo así:
Aunque no lo he probado.
Algunos enlaces que pueden ayudar:
http://api.drupal.org/api/drupal/includes!database!select.inc/function/SelectQueryInterface%3A%3Aunion/7
http://drupal.org/node/557318#comment-1991910
fuente
Encontré un módulo llamado Vista de campo de vistas , que le permite incrustar una vista como campo en otra vista. Todavía no lo he probado todavía, pero podría ser útil para usted.
fuente
El backend de EntityFieldQuery Views admite consultas para múltiples tipos de entidades al mismo tiempo. Por lo tanto, debería ser utilizable para consultar tanto los nodos como los comentarios. Ambos tipos de entidad usan una
uid
propiedad para vincular a su autor, por lo que a nivel de API EntityFieldQuery :: propertyCondition () debería poder usarse para seleccionar los nodos y comentarios de un solo usuario. Supongo que el backend de las vistas ofrece la misma característica.fuente
Un enfoque diferente podría ser crear fuentes de nodos y comentarios (con un filtro contextual del identificador del usuario en la URL) y luego combinar las dos fuentes en una nueva fuente, y mostrar esto por fecha de publicación.
fuente
Global usado : PHP campos ? Puede usarlos para unir con cinta adhesiva una Vista que combine los dos.
Cree una vista de contenido con los campos Contenido: Título y Contenido: Comentarios (Excluido de la pantalla).
Agregue un campo PHP que calcule cuál es más reciente, la fecha de la última actualización o la fecha del último comentario del usuario, y configure el valor del campo para que sea esa fecha. Agregue ese campo como una condición de clasificación.
Agregue un campo similar que genere un enlace al comentario o al nodo.
¡Suena bien para mi!
fuente