Tìm tất cả các nút không được tham chiếu bởi một mục menu hoặc nút khác


8

Trong quá trình tạo nội dung cho một trang web, chúng tôi đã kết thúc với các nút nội dung mồ côi không được liên kết từ bất cứ đâu. Tôi muốn tìm và kiểm tra những thứ này. Đáng ngạc nhiên, tôi không thể tìm thấy một mô-đun cho việc này.

Ví dụ giả thuyết nhỏ: Tôi đang xây dựng một trang web quảng cáo. Một người nào đó đã viết một trang "Liên hệ", một người khác đã viết "Giới thiệu" và một người khác đã viết "Chỉ đường". Người viết "Chỉ đường" quên đặt nó trong liên kết menu hoặc thêm liên kết từ "Giới thiệu" vào "Chỉ đường". Vì vậy, "Chỉ đường" mồ côi: không có liên kết đến nó. Tôi muốn tìm tất cả các nút như vậy để tôi có thể biết phải làm gì với chúng.


Bạn có thấy các nút này khi bạn liệt kê các nút al?
BetaRide

Đúng. Không có gì đặc biệt về họ. Họ chỉ là trẻ mồ côi về các menu và liên kết.
Dan Halbert

Có một lý do tại sao bạn không thể xóa chúng khỏi trang nội dung chung?
BetaRide

Không, nhưng đó không phải là vấn đề. Nói về tất cả các Trang cơ bản trên trang nội dung, tôi muốn biết trang nào là trẻ mồ côi và trang nào không. Tôi sẽ nhìn vào những đứa trẻ mồ côi và xem nếu tôi muốn có một số nội dung. Nếu không, tôi sẽ xóa chúng. Vấn đề là tôi không thể biết ai là trẻ mồ côi chỉ bằng cách nhìn vào danh sách. Ví dụ: một trong những biên tập viên của tôi có thể đã viết, ví dụ: trang "Danh bạ", nhưng chúng tôi đã quên đặt nó trong một menu và vì vậy nó hiện không thể truy cập được trừ khi bạn biết URL.
Dan Halbert

Bạn chỉ quan tâm đến các mô-đun hiện có, hoặc bạn có sẵn sàng viết một mô-đun tùy chỉnh nếu không có mô-đun nào làm những gì bạn đang tìm kiếm?
kiamlaluno

Câu trả lời:


3

Đối với các liên kết từ hệ thống menu:

Menu Node Views rất gần với những gì bạn yêu cầu nhưng cần một số mã hóa .

Đối với các liên kết từ phần thân (các trường) của các nút:

Mô-đun Tìm kiếm lưu tham chiếu giữa các nút. Điều này có thể được sử dụng bởi các khung nhìn để tạo ra một khung nhìn "backlinks". Đối với Drupal 5, có một mô-đun riêng biệt cho điều này với một số giải thích có tính quảng cáo, vì D6 (Lượt xem 2/3) tính năng này được đưa vào Mô-đun Lượt xem.

Tóm lược

lượt xem + vbo + API nút nút menu + Lượt xem nút menu (+ bộ lọc / bản vá tùy chỉnh hoặc Xem với truy vấn tùy chỉnh )


Điều này rất hữu ích, mặc dù nó không xử lý các liên kết đến các nút từ cơ thể (hoặc bất cứ điều gì) của các nút khác. Tôi nghĩ nó tốt như tôi sẽ nhận được - cảm ơn.
Dan Halbert

Rất tiếc, đã bỏ lỡ phần đó. Đã thêm thông tin còn thiếu bây giờ.
s.Daniel

4

Tôi cần điều này cho một yêu cầu khách hàng, vì vậy tôi quyết định thử và thực hiện nó mà không cần bất kỳ mô-đun bổ sung nào, và đẩy MySQL của tôi một chút. Đây là những gì tôi đã kết thúc với.

Để rõ ràng, điều này sẽ chỉ cung cấp một danh sách các NID mà KHÔNG có một mục menu liên quan.

Tôi cũng đã thêm một mệnh đề WHERE để giới hạn các loại nội dung, vì một số loại nội dung sẽ tự nhiên bị loại trừ do cách chúng được kiến ​​trúc.

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

Giải pháp tốt đẹp! +1 không có mô-đun mới.
Sam52

2

Bạn đã thử Lượt xem chưa? Bạn sẽ cần tạo chế độ xem cho các nút mồ côi, điều này phụ thuộc vào phân loại và trường của bạn.


Tôi đang tìm kiếm các nút Trang cơ bản không có mục trình đơn hoặc không được liên kết từ bất kỳ nút nào khác. Họ không có phân loại. Không có truy vấn View nào sẽ tìm thấy những truy vấn này.
Dan Halbert

Tôi có ấn tượng rằng bạn có thể sử dụng (không) logic trên Lượt xem. Vì vậy, bạn có thể nói một cái gì đó giống như Nodes nơi trường phân loại xyz trống.
David Barratt

Các nút này không có lĩnh vực phân loại. Tôi chỉ muốn biết liệu chúng có thể truy cập được trong một menu hoặc nếu chúng được liên kết đến từ nội dung của một số nút (có thể truy cập) khác.
Dan Halbert

2

Bạn có thể thực hiện phần menu khá dễ dàng với một truy vấn tùy chỉnh.

SELECT * 
FROM node
WHERE node.type = 'page'
AND node.nid NOT IN (
 SELECT nid
 FROM menu_node
)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.