Menemukan semua node yang tidak dirujuk oleh entri menu atau node lain

8

Dalam proses membuat konten untuk situs, kami berakhir dengan simpul konten yatim yang tidak ditautkan dari mana pun. Saya ingin mencari dan memeriksa ini. Anehnya, saya tidak dapat menemukan modul untuk ini.

Contoh hipotetis kecil: Saya sedang membangun situs brosur. Seseorang menulis halaman "Kontak", orang lain menulis "Tentang Kami", dan orang lain menulis "Arah". Orang yang menulis "Petunjuk Arah" lupa meletakkannya di tautan menu atau menambahkan tautan dari "Tentang Kami" ke "Petunjuk Arah". Jadi "Petunjuk Arah" menjadi yatim: tidak ada tautan ke sana. Saya ingin menemukan semua simpul tersebut sehingga saya bisa mencari tahu apa yang harus dilakukan dengan mereka.

Dan Halbert
sumber
Apakah Anda melihat node ini ketika Anda mendaftar semua node?
BetaRide
Iya. Tidak ada yang spesial dari mereka. Mereka hanya menjadi yatim dalam hal menu dan tautan.
Dan Halbert
Apakah ada alasan mengapa Anda tidak dapat menghapusnya dari halaman konten umum?
BetaRide
Tidak, tapi bukan itu masalahnya. Dari, katakanlah, semua Halaman Dasar pada halaman konten, saya ingin tahu mana yang yatim piatu dan mana yang tidak. Saya akan melihat anak-anak yatim dan melihat apakah ada konten di dalamnya yang saya inginkan. Jika tidak, saya akan menghapusnya. Masalahnya adalah saya tidak bisa membedakan mana yang yatim hanya dengan melihat daftarnya. Misalnya, salah satu editor saya mungkin telah menulis, katakanlah, halaman "Kontak", tetapi kami lupa memasukkannya ke dalam menu dan karena itu saat ini tidak dapat diakses kecuali Anda tahu URL.
Dan Halbert
Apakah Anda hanya tertarik pada modul yang ada, atau apakah Anda bersedia menulis modul khusus jika tidak ada modul yang melakukan apa yang Anda cari?
kiamlaluno

Jawaban:

3

Untuk tautan dari sistem menu:

Menu Node Views sangat dekat dengan apa yang Anda minta tetapi membutuhkan beberapa pengkodean .

Untuk tautan dari badan (bidang) node:

Modul Pencarian menyimpan referensi antar node. Ini dapat digunakan oleh tampilan untuk membuat tampilan "backlink". Untuk Drupal 5 ada modul terpisah untuk ini dengan beberapa penjelasan tambahan, karena D6 (Tampilan 2/3) functionallity ini dimasukkan ke dalam Views Module.

Ringkasan

tampilan + vbo + Menu Node API + Menu Node Views (+ filter / tambalan khusus atau Lihat dengan kueri khusus )

s.Daniel
sumber
Ini bermanfaat, meskipun tidak menangani tautan ke node dari tubuh (atau apa pun) dari node lain. Saya pikir ini sama baiknya dengan yang akan saya dapatkan - terima kasih.
Dan Halbert
Ups, ketinggalan bagian itu. Menambahkan informasi yang hilang sekarang.
s.Daniel
4

Saya membutuhkan ini untuk permintaan klien, jadi saya memutuskan untuk mencoba dan melakukannya tanpa modul tambahan, dan mendorong MySQL saya sedikit. Inilah yang akhirnya saya lakukan.

Untuk kejelasan, ini hanya akan memberikan daftar NID yang TIDAK memiliki item menu terkait.

Saya juga menambahkan klausa WHERE untuk membatasi jenis konten, karena beberapa jenis konten secara alami akan dikecualikan karena cara mereka dirancang.

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
sumber
Solusi bagus! +1 tanpa modul baru.
Sam152
2

Sudahkah Anda mencoba Tampilan ? Anda harus membuat tampilan untuk node yatim, yang akan tergantung pada taksonomi dan bidang Anda.

David Barratt
sumber
Saya mencari, katakanlah, simpul Halaman Dasar yang tidak memiliki entri menu atau tidak ditautkan dari simpul lain mana pun. Mereka tidak memiliki taksonomi. Tidak ada permintaan Lihat yang akan menemukan ini.
Dan Halbert
Saya mendapat kesan bahwa Anda bisa menggunakan (bukan) logika pada Views. Jadi Anda bisa mengatakan sesuatu seperti Nodes di mana bidang taksonomi xyz kosong.
David Barratt
Node ini tidak memiliki bidang taksonomi. Saya hanya ingin tahu apakah mereka dapat diakses dalam suatu menu atau jika mereka ditautkan dari konten beberapa node (dapat diakses) lainnya.
Dan Halbert
2

Anda dapat menyelesaikan bagian menu dengan cukup mudah dengan kueri khusus.

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