メニューエントリまたは別のノードによって参照されていないすべてのノードを検索する


8

サイトのコンテンツを作成する過程で、どこからもリンクされていない孤立したコンテンツノードができました。これらを見つけて調べたいのですが。驚いたことに、このためのモジュールが見つかりません。

小さな仮説の例:パンフレットウェアサイトを構築しています。誰かが「連絡先」ページを書いたり、誰かが「会社概要」を書いたり、誰かが「道順」を書いた。「ルート案内」を書いている人がメニューリンクに追加するか、「会社案内」から「ルート案内」へのリンクを追加するのを忘れていました。そのため、「Directions」は孤立します。リンクはありません。私はそのようなノードをすべて見つけて、それらをどうするかを理解できるようにしたいと考えています。


すべてのノードを一覧表示しているときにこのノードが表示されていますか?
BetaRide

はい。それらについて特別なことは何もありません。メニューとリンクの面で孤立しているだけです。
ダンハルバート

一般コンテンツページから削除できない理由はありますか?
BetaRide

いいえ、しかしそれは問題ではありません。たとえば、コンテンツページのすべての基本ページのうち、どれが孤立しているか、どれが孤立していないかを知りたいのです。孤児を見て、中にコンテンツが含まれているかどうかを確認します。そうでない場合は、削除します。問題は、リストを見ただけでは、どれが孤児かわからないことです。たとえば、私の編集者の1人が「連絡先」ページなどを書き込んだ可能性がありますが、メニューに配置するのを忘れていたため、URLがわからない場合は現在アクセスできません。
Dan Halbert、2012

既存のモジュールに興味があるだけですか、それとも、探しているモジュールが存在しない場合にカスタムモジュールを作成してもよろしいですか?
kiamlaluno

回答:


3

メニューシステムからのリンク:

メニューノードビューは、要求したものに非常に近くなりますが、コーディングが必要です。

ノードの本体(フィールド)からのリンクの場合:

検索モジュールはノード間の参照を保存します。これは、「バックリンク」ビューを作成するためにビューで使用できます。Drupalの5の場合があった。このために別々のモジュール D6(ビュー2/3)ので、このfunctionallityは、ビュー・モジュールに焼かれる、いくつかのaditional explenationと。

概要

ビュー + vbo + メニューノードAPI + メニューノードビュー(+カスタムフィルター/パッチまたはカスタムクエリ付きビュー


これは便利ですが、他のノードの本体(または何でも)からのノードへのリンクは処理しません。私が手に入れるのと同じくらい良いと思います-ありがとう。
Dan Halbert

おっと、その部分を逃した。不足している情報を追加しました。
s.Daniel

4

クライアントのリクエストにこれが必要だったので、追加のモジュールなしで試してみて、MySQLを少しプッシュすることにしました。これは私が結局終わったものです。

わかりやすくするために、これは関連するメニュー項目を持たないNIDのリストのみを提供します。

コンテンツタイプを制限するためにWHERE句も追加しました。一部のコンテンツタイプは、その設計方法により当然除外されます。

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

素敵な解決策!新しいモジュールがない場合は+1。
Sam152

2

ビューを試しましたか?孤立したノードのビューを作成する必要があります。これは、分類法とフィールドに依存します。


たとえば、メニューエントリがないか、他のノードからリンクされていないBasic Pageノードを探しています。分類法はありません。これらを見つけるViewクエリはありません。
ダンハルバート

ビューでロジックを使用できる(ではない)という印象を受けました。したがって、xyz分類フィールドが空のノードのようなものを言うことができます。
デビッドバラット

これらのノードには分類フィールドはありません。メニューでアクセスできるかどうか、または他の(アクセス可能な)ノードのコンテンツからリンクされているかどうかを知りたいだけです。
ダンハルバート

2

カスタムクエリを使用すると、メニュー部分をかなり簡単に作成できます。

SELECT * 
FROM node
WHERE node.type = 'page'
AND node.nid NOT IN (
 SELECT nid
 FROM menu_node
)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.