Antworten:
Ich bin mir nicht sicher, ob es eine beste Methode dafür gibt. Der einzige Weg, den ich mir vorstellen kann, erfordert ein wenig Mühe. Das heißt, wenn Sie eine Liste aller Bilder in der Inhaltstabelle in der Datenbank erstellen (und möglicherweise in Modulen, Menüs, Bannern usw.). Vergleichen Sie diese Liste mit allen Bildern, wenn auf Bilder häufig verwiesen wird auf dem Dateisystem, und vergleichen Sie dann zwischen jeder Liste und entfernen Sie die Bilder, die nicht verwendet werden.
Das würde also so aussehen:
1) Rufen Sie eine Liste aller Bilder in der Datenbanktabelle von com_content ab. Dump alle Zeilen, Regex für <img src="images/stories/an-image.jpg" />
. Eine andere Möglichkeit besteht darin, die strip_tags () -Methode von php zu verwenden und nur das Tag zuzulassen. Ich finde das einfacher als das Schreiben eines regulären Ausdrucks im Allgemeinen. Führen Sie grundsätzlich ein PHP-Skript aus, um diese Liste als Textdokument oder CSV für Sie zu erstellen.
2) Holen Sie sich eine Liste aller Bilder auf der Website. Sie könnten grep von der Kommandozeile aus verwenden, um dies zu tun, glaube ich. Sie könnten es wahrscheinlich auch mit einer rekursiven PHP-Dateisystemmethode tun.
3) Fügen Sie beide in eine Tabelle ein und führen Sie einen Vergleich mit jeder Spalte durch, um festzustellen, ob das Bild verwendet wird. Erstellen Sie eine Liste nicht verwendeter Bilder in einer dritten Spalte.
- -
Persönlich bin ich mir nicht sicher, ob sich die Mühe lohnt, es sei denn, Sie haben eine Menge Bilder. Sie müssen dies jedoch bis zu Ihrem Anwendungsfall bestimmen. Es kann auch eine weitaus einfachere Lösung geben, die jemand anderes vorschlagen muss!
Wenn Sie über Ihre Zugriffsprotokolle verfügen, können Sie möglicherweise alle angeforderten Bilddateien der letzten X Monate abrufen (Sie müssen mit all diesen Daten spielen). Diese werden also höchstwahrscheinlich auf Ihrer tatsächlichen Website verwendet (jedoch nicht zu 100%). Abhängig von Ihrem Inhalt und Ihrer Site-Struktur und wenn Ihre Site nicht wirklich riesig ist (dh 1 Million Artikel), ist es sehr wahrscheinlich, dass die verbleibenden wahrscheinlich nicht verwendet werden (wiederum nicht 100%).
Ich finde diese Lösung so einfach. Sichern Sie die Bilder vor dem Löschen. Sie können später nach 404-Fehlern suchen, die beim Öffnen bestimmter Dateien auftreten, und diese möglicherweise wiederherstellen.
Es ist eine schmutzige Lösung, aber es gibt wirklich keinen einfachen Weg. Die beste Option wäre, den Ratschlägen des Tschad zu folgen und einen eigenen Parser zu schreiben.
Während zum Zeitpunkt der Frage keine Erweiterungen vorhanden waren, gibt es ab August 2018 mindestens einige Erweiterungen, mit denen verwaiste Bilder anscheinend gefunden und gelöscht werden können:
VX orphanImages (kostenpflichtige Erweiterung)
"Das VX orphanImages-Plugin durchsucht Ihren Joomla! Site-Bilderordner nach Elementen, die in keinem Inhalt der Site verwendet werden. Es verwendet die zentrale Medienkomponente, um verwaiste Bilder in der Liste zu markieren, sodass Sie entscheiden können, ob Sie sie behalten oder entfernen möchten. ""
ImageManager (kostenlose / kostenpflichtige Versionen)
Mit "ImageManager for Joomla!" Können Sie Bilder verschieben und umbenennen, ohne den Bildlink in Artikeln und benutzerdefinierten HTML-Modulen zu verlieren. Ziehen Sie Ihre Bilder einfach per Drag & Drop, um Ihre Website neu zu strukturieren und zu bereinigen. Außerdem können alle nicht verwendeten Bilder aufgelistet und gelöscht werden . "