Recherche de tous les nœuds non référencés par une entrée de menu ou un autre nœud

8

Au cours de la création du contenu d'un site, nous nous sommes retrouvés avec des nœuds de contenu orphelins qui ne sont liés à aucun endroit. J'aimerais les trouver et les examiner. Étonnamment, je ne trouve pas de module pour cela.

Petit exemple hypothétique: je construis un site de brochures. Quelqu'un a écrit une page "Contact", quelqu'un d'autre a écrit "A propos de nous" et quelqu'un d'autre a écrit "Directions". La personne qui écrit «Directions» a oublié de le mettre dans un lien de menu ou d'ajouter un lien de «À propos de nous» à «Directions». Donc "Directions" est orphelin: il n'y a pas de lien vers celui-ci. J'aimerais trouver tous ces nœuds afin de savoir quoi en faire.

Dan Halbert
la source
Voyez-vous ces nœuds lorsque vous répertoriez tous les nœuds?
BetaRide
Oui. Il n'y a rien de spécial en eux. Il se trouve qu'ils sont orphelins en termes de menus et de liens.
Dan Halbert
Y a-t-il une raison pour laquelle vous ne pouvez pas les supprimer de la page de contenu général?
BetaRide
Non, mais ce n'est pas le problème. Par exemple, toutes les pages de base de la page de contenu, je veux savoir lesquelles sont orphelines et lesquelles ne le sont pas. Je vais regarder les orphelins et voir s'il y a du contenu à l'intérieur que je veux. Sinon, je les supprimerai. Le problème est que je ne peux pas dire lesquels sont orphelins simplement en regardant la liste. Par exemple, l'un de mes rédacteurs peut avoir écrit, disons, une page "Contacts", mais nous avons oublié de la mettre dans un menu et elle est donc actuellement inaccessible à moins que vous ne connaissiez l'URL.
Dan Halbert
Êtes-vous simplement intéressé par les modules existants, ou seriez-vous prêt à écrire un module personnalisé si aucun module ne fait ce que vous recherchez?
kiamlaluno

Réponses:

3

Pour les liens du système de menus:

Les vues des nœuds de menu sont très proches de ce que vous demandez, mais nécessitent un certain codage .

Pour les liens à partir du corps (champs) des nœuds:

Le module de recherche enregistre les références entre les nœuds. Cela peut être utilisé par les vues pour créer une vue "backlinks". Pour Drupal 5, il y avait un module séparé pour cela avec quelques explications supplémentaires, puisque depuis D6 (vues 2/3), cette fonctionnalité est intégrée dans le module Vues.

Sommaire

vues + vbo + Menu Node API + Menu Node Views (+ filtre personnalisé / patch ou vue avec requête personnalisée )

s.Daniel
la source
Ceci est utile, bien qu'il ne gère pas les liens vers les nœuds du corps (ou autre) des autres nœuds. Je pense que c'est aussi bon que je vais l'obtenir - merci.
Dan Halbert
Oups, j'ai raté cette partie. Ajout des informations manquantes maintenant.
s.Daniel
4

J'en avais besoin pour une demande client, j'ai donc décidé d'essayer et de le faire sans modules supplémentaires, et de pousser un peu mon MySQL. C'est ce que j'ai fini avec.

Pour plus de clarté, cela ne fournira qu'une liste de NID qui n'ont pas d'élément de menu associé.

J'ai également ajouté une clause WHERE pour limiter les types de contenu, car certains types de contenu seront naturellement exclus en raison de la façon dont ils ont été architecturés.

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
la source
Bonne solution! +1 pour aucun nouveau module.
Sam152
2

Avez-vous essayé Views ? Vous devrez créer une vue pour les nœuds orphelins, qui dépendrait de votre taxonomie et de vos champs.

David Barratt
la source
Je recherche, par exemple, des nœuds de page de base qui n'ont pas d'entrée de menu ou qui ne sont liés à aucun autre nœud. Ils n'ont pas de taxonomie. Aucune requête View ne va les trouver.
Dan Halbert
J'avais l'impression que vous pouviez utiliser (pas) la logique sur les vues. Vous pourriez donc dire quelque chose comme Nodes où le champ de taxonomie xyz est vide.
David Barratt
Ces nœuds n'ont pas de champs de taxonomie. Je veux juste savoir s'ils sont accessibles dans un menu ou s'ils sont liés à partir du contenu d'un autre nœud (accessible).
Dan Halbert
2

Vous pouvez accomplir la portion de menu assez facilement avec une requête personnalisée.

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