Encontrar todos los nodos a los que no hace referencia una entrada de menú u otro nodo

8

En el curso de la creación del contenido para un sitio, terminamos con nodos de contenido huérfanos que no están vinculados desde ningún lugar. Me gustaría encontrar y examinar estos. Sorprendentemente, no puedo encontrar un módulo para esto.

Pequeño ejemplo hipotético: estoy construyendo un sitio de folleto. Alguien escribió una página de "Contacto", otra persona escribió "Acerca de nosotros", y otra persona escribió "Instrucciones". La persona que escribió "Instrucciones" olvidó ponerlo en un enlace de menú o agregar un enlace de "Acerca de nosotros" a "Instrucciones". Entonces "Instrucciones" queda huérfano: no hay enlaces a él. Me gustaría encontrar todos esos nodos para poder averiguar qué hacer con ellos.

Dan Halbert
fuente
¿Ves estos nodos cuando enumeras todos los nodos?
BetaRide
Si. No hay nada especial en ellos. Simplemente quedan huérfanos en términos de menús y enlaces.
Dan Halbert
¿Hay alguna razón por la que no pueda eliminarlos de la página de contenido general?
BetaRide
No, pero ese no es el problema. De, digamos, todas las páginas básicas en la página de contenido, quiero saber cuáles son huérfanas y cuáles no. Voy a mirar a los huérfanos y ver si hay algún contenido dentro que quiera. Si no, los eliminaré. El problema es que no puedo decir cuáles son huérfanos con solo mirar la lista. Por ejemplo, uno de mis editores puede haber escrito, por ejemplo, una página de "Contactos", pero olvidamos ponerla en un menú y, por lo tanto, actualmente es inaccesible a menos que conozca la URL.
Dan Halbert
¿Está interesado en los módulos existentes o estaría dispuesto a escribir un módulo personalizado si ningún módulo hace lo que está buscando?
kiamlaluno

Respuestas:

3

Para enlaces del sistema de menús:

Las Vistas de nodo de menú se acercan mucho a lo que solicita, pero necesitan algo de codificación .

Para enlaces del cuerpo (campos) de nodos:

El módulo de búsqueda guarda referencias entre nodos. Esto puede ser usado por las vistas para crear una vista de "backlinks". Para Drupal 5 había un módulo separado para esto con alguna explicación adicional, ya que D6 (Vistas 2/3) esta funcionalidad está integrada en el Módulo de Vistas.

Resumen

vistas + vbo + Nodo de menú API + Vistas de nodo de menú (+ filtro / parche personalizado o Vista con consulta personalizada )

s.Daniel
fuente
Esto es útil, aunque no maneja enlaces a nodos desde el cuerpo (o lo que sea) de otros nodos. Creo que es tan bueno como voy a conseguir, gracias.
Dan Halbert
Vaya, se perdió esa parte. Se agregó la información que falta ahora.
s.Daniel
4

Necesitaba esto para una solicitud de un cliente, así que decidí intentarlo sin módulos adicionales y presionar un poco mi MySQL. Esto es con lo que terminé.

Para mayor claridad, esto solo proporcionará una lista de NID que NO tienen un elemento de menú asociado.

También he agregado una cláusula WHERE para limitar los tipos de contenido, ya que algunos tipos de contenido se excluirán naturalmente por la forma en que fueron diseñados.

SELECT n.nid, n.type, n.title, n.status
FROM node AS n
WHERE (n.type = 'article' OR n.type = 'page')
AND n.nid NOT IN (
  SELECT REPLACE(link_path, "node/", "") AS nid
  FROM menu_links
  WHERE SUBSTRING(link_path, 6, LENGTH(link_path)) REGEXP "^[0-9]+$" 
);
Simon Fryer
fuente
Buena solución! +1 para ningún módulo nuevo.
Sam152
2

¿Has probado Views ? Deberá crear una vista para los nodos huérfanos, que dependería de su taxonomía y campos.

David Barratt
fuente
Estoy buscando, por ejemplo, nodos de página básica que no tienen entrada de menú o que no están vinculados desde ningún otro nodo. No tienen taxonomía. No hay consulta de vista que vaya a encontrarlos.
Dan Halbert
Tenía la impresión de que podría usar (no) lógica en las Vistas. Entonces podría decir algo como Nodos donde el campo de taxonomía xyz está vacío.
David Barratt
Estos nodos no tienen campos de taxonomía. Solo quiero saber si están accesibles en un menú o si están vinculados desde el contenido de algún otro nodo (accesible).
Dan Halbert
2

Puede realizar la parte del menú con bastante facilidad con una consulta personalizada.

SELECT * 
FROM node
WHERE node.type = 'page'
AND node.nid NOT IN (
 SELECT nid
 FROM menu_node
)
ummdorian
fuente