Trovare tutti i nodi a cui non fa riferimento una voce di menu o un altro nodo


8

Nel corso della creazione del contenuto per un sito, abbiamo finito con nodi di contenuti orfani che non sono collegati da nessuna parte. Mi piacerebbe trovare ed esaminare questi. Sorprendentemente, non riesco a trovare un modulo per questo.

Piccolo esempio ipotetico: sto costruendo un sito di brochure. Qualcuno ha scritto una pagina "Contatti", qualcun altro ha scritto "Chi siamo" e qualcun altro ha scritto "Indicazioni stradali". La persona che scrive "Indicazioni stradali" ha dimenticato di inserirlo in un collegamento di menu o di aggiungere un collegamento da "Chi siamo" a "Indicazioni stradali". Quindi "indicazioni stradali" è orfano: non ci sono collegamenti ad esso. Vorrei trovare tutti questi nodi in modo da poter capire cosa farne.


Vedi questi nodi quando elenchi tutti i nodi?
BetaRide,

Sì. Non c'è niente di speciale in loro. Capita solo di rimanere orfani in termini di menu e collegamenti.
Dan Halbert,

C'è un motivo per cui non è possibile eliminarli dalla pagina del contenuto generale?
BetaRide,

No, ma non è questo il problema. Di, per esempio, tutte le pagine di base sulla pagina dei contenuti, voglio sapere quali sono orfani e quali no. Guarderò gli orfani e vedrò se dentro di me voglio del contenuto. In caso contrario, li eliminerò. Il problema è che non posso dire quali sono orfani solo guardando l'elenco. Ad esempio, uno dei miei redattori potrebbe aver scritto, per esempio, una pagina "Contatti", ma abbiamo dimenticato di metterlo in un menu e quindi è attualmente inaccessibile a meno che tu non conosca l'URL.
Dan Halbert,

Sei interessato solo ai moduli esistenti o saresti disposto a scrivere un modulo personalizzato se nessun modulo fa quello che stai cercando?
kiamlaluno

Risposte:


3

Per i collegamenti dal sistema di menu:

Le visualizzazioni dei nodi dei menu si avvicinano molto a ciò che richiedi, ma richiedono una certa codifica .

Per i collegamenti dal corpo (campi) dei nodi:

Il modulo di ricerca salva i riferimenti tra i nodi. Questo può essere usato dalle viste per creare una vista "backlink". Per Drupal 5 c'era un modulo separato per questo con qualche spiegazione adizionale, dal momento che D6 (Viste 2/3) questa funzionalità è inserita nel modulo Viste.

Sommario

viste + VBO + Nodo Menu API + Menu Nodo Vista (+ filtro personalizzato / di patch o Vista con query personalizzata )


Questo è utile, sebbene non gestisca collegamenti a nodi dal corpo (o qualunque cosa) di altri nodi. Penso che sia buono come ho intenzione di ottenere - grazie.
Dan Halbert,

Oops, ho perso quella parte. Aggiunte le informazioni mancanti ora.
s

4

Ne avevo bisogno per una richiesta dei clienti, quindi ho deciso di provare a farlo senza moduli aggiuntivi e di spingere un po 'il mio MySQL. Questo è quello che ho finito.

Per chiarezza, questo fornirà solo un elenco di NID che NON hanno una voce di menu associata.

Ho anche aggiunto una clausola WHERE per limitare i tipi di contenuto, poiché alcuni tipi di contenuto saranno naturalmente esclusi a causa del modo in cui sono stati progettati.

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]+$" 
);

Bella soluzione! +1 per nessun nuovo modulo.
Sam152

2

Hai provato Views ? Dovrai creare una vista per i nodi orfani, che dipenderebbe dalla tua tassonomia e campi.


Sto cercando, diciamo, nodi Pagina di base che non hanno voci di menu o non sono collegati da nessun altro nodo. Non hanno tassonomia. Non esiste una query di visualizzazione che li troverà.
Dan Halbert,

Avevo l'impressione che tu potessi usare la logica (non) su Views. Quindi potresti dire qualcosa come Nodi in cui il campo della tassonomia xyz è vuoto.
David Barratt,

Questi nodi non hanno campi di tassonomia. Voglio solo sapere se sono accessibili in un menu o se sono collegati dal contenuto di un altro nodo (accessibile).
Dan Halbert,

2

È possibile eseguire la parte del menu abbastanza facilmente con una query personalizzata.

SELECT * 
FROM node
WHERE node.type = 'page'
AND node.nid NOT IN (
 SELECT nid
 FROM menu_node
)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.