it-swarm-vi.com

Làm thế nào để có được danh sách tất cả các tập tin hình ảnh mồ côi?

Tôi muốn tạo danh sách các hình ảnh không còn được sử dụng trong bất kỳ mục nội dung nào để chúng có thể bị xóa khỏi đĩa. Phương pháp tốt nhất để tạo ra một danh sách như vậy là gì?

8
miroxlav

Tôi không chắc chắn có một phương pháp tốt nhất về cách làm điều này. Cách duy nhất tôi có thể nghĩ đến đòi hỏi một chút nỗ lực. Nghĩa là, tạo một danh sách tất cả các hình ảnh trong bảng nội dung trong cơ sở dữ liệu (và có khả năng trong các mô-đun, menu, biểu ngữ, v.v ... Bất kỳ nơi nào hình ảnh được tham chiếu rất nhiều), hãy so sánh danh sách đó với tất cả các hình ảnh trên hệ thống tệp, sau đó so sánh giữa từng danh sách và xóa những hình ảnh không được sử dụng.

Vì vậy, điều này sẽ trông như:

1) Nhận danh sách tất cả các hình ảnh trong bảng cơ sở dữ liệu của com_content. Kết xuất tất cả các hàng, regex cho <img src="images/stories/an-image.jpg" />. Một cách khác là sử dụng phương thức Strip_tags () của php và chỉ cho phép thẻ. Tôi thấy điều này dễ hơn là viết một regex nói chung. Về cơ bản chạy một tập lệnh php để xây dựng danh sách này cho bạn dưới dạng tài liệu văn bản hoặc csv.

2) Lấy danh sách tất cả các hình ảnh trên trang web. Bạn có thể sử dụng grep từ dòng lệnh để làm điều này tôi tin. Bạn có thể có thể làm điều đó với một số phương thức hệ thống tập tin php đệ quy.

3) nhận cả hai vào một bảng tính và chạy một số loại so sánh với từng cột để xem hình ảnh có được sử dụng hay không, biên dịch một danh sách các hình ảnh không sử dụng trong cột thứ ba.

-

Cá nhân, trừ khi bạn có rất nhiều hình ảnh tào lao, tôi không chắc điều này đáng để nỗ lực. Nhưng bạn sẽ phải xác định rằng đang chờ xử lý trường hợp sử dụng của bạn. Ngoài ra có thể có một giải pháp đơn giản hơn nhiều mà người khác sẽ phải đề xuất!

5
Chad Windnagle

Nếu bạn có nhật ký truy cập, bạn có thể lấy ra tất cả các tệp hình ảnh được yêu cầu trong X tháng qua (bạn sẽ cần phải chơi với tất cả dữ liệu này). Vì vậy, những thứ này rất có thể được sử dụng trong trang web thực tế của bạn (nhưng không phải là 100%). Tùy thuộc vào nội dung và cấu trúc trang web của bạn và nếu trang web của bạn không thực sự lớn (ví dụ: 1 triệu bài viết), rất có thể phần còn lại có thể không được sử dụng (một lần nữa không phải là 100%).

Tôi thấy giải pháp này là dễ dàng. Sao lưu hình ảnh trước khi xóa. Sau này bạn có thể theo dõi các lỗi 404 khi cố mở các tệp cụ thể và bạn có thể quyết định khôi phục các lỗi này.

Đó là giải pháp bẩn, nhưng thực sự không có cách nào dễ dàng. Tùy chọn tốt nhất sẽ là làm theo lời khuyên của Chad và viết trình phân tích cú pháp của riêng bạn.

3
Ivo

Tôi không biết một phần mở rộng hiện có sẽ làm điều đó. Đặt cược tốt nhất của bạn sẽ là viết một tập lệnh kiểm tra từng hình ảnh dựa trên các bảng trong cơ sở dữ liệu nơi có thể lưu trữ nội dung để xem chúng có được sử dụng không.

3
Michael

Mặc dù không có tiện ích mở rộng nào tồn tại khi câu hỏi được hỏi, kể từ tháng 8 năm 2018, có ít nhất một vài tiện ích mở rộng rõ ràng có thể tìm và xóa hình ảnh mồ côi:

VX mồ côi (tiện ích mở rộng phải trả tiền)

"Plugin VX orphanImages quét thư mục hình ảnh trang web Joomla của bạn để tìm các mục không được sử dụng trong bất kỳ nội dung nào trên trang web. Nó sử dụng thành phần Media cốt lõi để đánh dấu các hình ảnh mồ côi trong danh sách, do đó bạn có thể quyết định giữ hay xóa chúng. "

Trình quản lý hình ảnh (phiên bản miễn phí/trả phí)

"ImageManager cho Joomla! Cho phép bạn di chuyển và đổi tên hình ảnh mà không mất liên kết hình ảnh trong Bài viết và Mô-đun HTML tùy chỉnh. Chỉ cần kéo và thả hình ảnh của bạn để cấu trúc lại và dọn sạch trang web của bạn. Nó cũng có thể liệt kê tất cả các hình ảnh không sử dụng và xóa chúng . "

0
Neil Robertson