Creación de una lista de nodos similares en Drupal 7 / Views 3


Copiar desde drupal.stackexchange.com con la esperanza de obtener más respuestas aquí:

Me enfrento a un problema bastante común de mostrar una lista de nodos similar a la actual. Nodo similar se define como uno que tiene al menos un término de taxonomía que tiene el nodo actual. Hay pocas soluciones disponibles como módulos, sin embargo, los módulos que he encontrado (específicamente Similares Por Términos) están en fase beta (como en "no funciona correctamente") para Drupal 7.

También he encontrado un par de soluciones basadas en vistas y filtros contextuales (como http://scito.ch/content/show-related-nodes-block-based-taxonomy-terms-views-3-and-drupal-7 ) o relaciones. Me gusta bastante de esta manera, ya que me ahorra la instalación de módulos adicionales y con vistas que se desarrollan activamente y son compatibles, preferiría usarlos en lugar de cualquier solución personalizada. El problema que no puedo evitar es cómo ordenar "nodos similares" por el número de términos que comparten. Por ejemplo, si tengo Nodo "iPhone 4S" con Términos "Gadget", "Apple" y "Teléfono", quiero nodos similares en el siguiente orden:

  1. iPhone 3 (Apple, Gadget, Teléfono)
  2. iPad (Apple, Gadget, Tablet)
  3. Mac (Apple, Ordenador)
  4. Bramley (Manzana, Fruta, Árbol)

¿Cómo puedo ordenar nodos en esta vista por el número de términos que comparten?

Esta pregunta es acerca de construir una vista, por favor no sugiera soluciones basadas en php o módulos personalizados. Agradecer.

Author: Stanislav Kniazev, 2012-05-04

5 answers

  1. Crear una vista de bloque
  2. Agregar filtro contextual -> Contenido: Nid -> Proporcionar valor predeterminado - > ID de contenido desde la URL
  3. Añadir relación - > Contenido: Términos taxonómicos en el nodo -> especificar el vocabulario apropiado
  4. Agregar relación -> Término taxonómico: Contenido que usa vocabulario como se especificó anteriormente - > Marcar la casilla Requerir esta relación
  5. Activar la agregación de vistas (NOTA: la flecha de la siguiente imagen apunta al lugar equivocado y debería apuntar a 2 filas debajo de donde está)
  6. Asumiendo que solo está listando el título, edite el campo título para usar la Relación que configuró en el #4 anterior.
  7. Añadir nuevos criterios de ordenación del Contenido: Nid. En configuración de agregación, seleccione Contar. Usar relación de #4 y ordenar descendente
  8. Agregar filtro contextual - > Contenido: Nid - > Usar relación desde #4 - > Proporcionar valor predeterminado - ID de contenido desde URL - > Desplácese hacia abajo y expanda " Más "y luego marque "Excluir" para eliminar el nodo actual de la vista

** Consulte el comentario de @garret-albright a continuación para probar esto en la vista previa de la interfaz de usuario de vistas. **

Vista de nodo relacionado

 81
Author: nmc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-04 13:03:12

Adivina qué - hay módulos para eso también: D

Puedo recomendar similar por términos dándole esa vista sin problemas de configuración.

 2
Author: rémy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-18 11:00:18

Esta es una solución alternativa, relacionada con esta pregunta. Sin embargo, puede que no se aplique a todos los casos, pero si se puede utilizar es más simple (y más seguro que la agregación en mi opinión).

Voy a usar paneles. Una vez que cree un panel para mostrar su entidad (nodo o cualquier otra cosa), puede agregar varias vistas y mostrarlas junto al contenido. uno de estos puntos de vista va a ser nuestro contenido relacionado.
Por lo tanto, los paneles son la única limitación. tal vez es posible utilizar mini-paneles y lo representan como un bloque, no lo he intentado yo mismo.

Requisitos previos

  • Vistas (d'oh!)
  • Paneles
  • Panel de contenido de vistas: no es necesario descargar, está en el módulo ctools descargado con vistas.
  • Administrador de página: Igual que el Panel de Contenido de Vistas (Opcional / Muy recomendable).


La vista

  1. Cree su vista como lo haría normalmente, pero haga no crearla como un bloque o pagina. Desmarque ambos.

  2. En la página de configuración de vistas, cree una relación con el término de taxonomía en la entidad.

  3. Cree un filtro contextual para filtrar: Taxonomía term: Term ID.

  4. Crear otro filtro contextual : Entity ID or Content: Nid si se trata de un nodo.

    • Al crear este, en la parte inferior hay un conjunto de campos contraído que tiene la opción: Exclude. Ver como marcado.

  5. Ahora haciendo clic en Addcrear una nueva pantalla de tipo Content pane.

  6. En el área de configuración de la pantalla (llamada: Configuración del panel) abra Argumento input. Usted debe tener 2 opciones:

    • Content: Nid source: Establece su fuente como Desde context. Establezca su Contexto obligatorio como ID de contenido (si no está utilizando el nodo, puede ser ID .
    • Taxonomy term: Term ID source: Establece su fuente como Desde context. Establece su Contexto obligatorio como ID de término.

Felicidades! Ha terminado de crear su vista. Es hora de un panel (no voy a explicar mucho sobre la creación de un panel, ya que está más allá del alcance de esta Q/A).

El Panel

  1. Crear un panel (o habilitar el panel node / % node default y agregar un variante).

  2. En la pestaña context, Cree una relación con el término taxonómico en la entidad.

  3. Haga clic en agregar contenido en uno de los paneles.

  4. Si no ha cambiado la categoría de la vista, está en el panel de vistas añádala. Le pedirá un ID de entidad y un ID de término ambos están disponibles ahora en su contexto de paneles, establézcalos.

  5. Ahora, cuando se muestra el panel, Todo el contenido con el mismo término excluyendo el contenido en esta página se muestra.

Configuración de Vistas

Configuración de Vistas

Filtro Contextual

Filtro Contextual

Entrada de argumento

Entrada de argumento

P. S Importante:

Este método se ha probado y funciona perfectamente, pero en el momento de escribir este artículo ctools tenía un error. Hay un parche para ello: https://www.drupal.org/node/2195211

 0
Author: loolooyyyy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-16 18:51:49

Cuando está configurando vistas complejas como esta, hay algunos consejos de configuración que pueden ayudarlo a comprender lo que realmente está sucediendo en cada paso:

En Estructura > > Vistas > > Configuración > > Básico:

  • Marque 'Mostrar advertencia de ayuda avanzada' (importante: requiere el módulo de Ayuda Avanzada instalado)
  • Marque 'Actualizar automáticamente la vista previa de los cambios'
  • Marque 'Mostrar información y estadísticas sobre la vista durante la vista previa en vivo'
  • Marque ' Mostrar el SQL query "
  • y finalmente, Guardar configuración

Ahora puede previsualizar los resultados de cada paso de configuración, la consulta SQL asociada y los campos y tablas involucrados, por lo que encontrará más fácil entender cómo funcionan los filtros y las agregaciones.

Espero que ayude.

 -1
Author: Interdruper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-27 06:24:09

No estoy seguro de si entendí completamente la esencia de su pregunta, pero creo que la cola de nodos es la respuesta. Echa un vistazo http://drupal.org/project/nodequeue

El módulo está bien desarrollado. Lo he usado para un cliente y puedes usar su api smartqueue también para hacer tu lista.

Espero haber sido útil.

 -2
Author: Vishal Khialani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-20 17:28:42