Answers:
我不确定如何执行此操作的最佳方法。我能想到的唯一方法需要一些努力。也就是说,生成数据库内容表中所有图像的列表(并可能在模块,菜单,横幅等中。在很多引用图像的地方),将该列表与所有图像进行比较在文件系统上,然后在每个列表之间进行比较,并删除未使用的图像。
所以这看起来像:
1)获取com_content的数据库表中所有图像的列表。转储所有行,正则表达式为<img src="images/stories/an-image.jpg" />
。另一种方法是使用php的strip_tags()方法,仅允许标记。我发现这比一般编写正则表达式容易。基本上运行php脚本以文本文件或csv的形式为您构建此列表。
2)获取站点上所有图像的列表。我相信您可以从命令行使用grep来执行此操作。您可能还可以使用某种递归php文件系统方法来执行此操作。
3)将两者都放入电子表格,并对每列进行某种比较,以查看是否使用了图像,然后在第三列中编译未使用图像的列表。
-
就个人而言,除非您有大量图像,否则我不确定这样做是否值得。但是您必须确定未决的用例。也可能会有其他人必须提出的更简单的解决方案!
如果您有访问日志,则可以在最近的X个月中提取所有请求的图像文件(您将需要处理所有这些数据)。因此,这些很可能已在您的实际网站中使用(但还不是100%)。根据您的内容和站点结构,以及您的站点是否不是真正的庞大(即一百万篇文章),很可能其余部分可能未被使用(再次不是100%)。
我发现此解决方案很简单。在删除之前备份图像。您可以稍后跟踪尝试打开特定文件的404错误,然后可以决定恢复这些错误。
这是肮脏的解决方案,但实际上没有简单的方法。最好的选择是遵循乍得的建议并编写自己的解析器。
虽然在提出问题时没有扩展名,但截至2018年8月,至少有几个扩展名可以明显地查找和删除孤立的图像:
VX orphanImages(付费扩展)
“ VX orphanImages插件会扫描您的Joomla!网站图像文件夹,以查找网站上任何内容均未使用的项目。它使用核心Media组件在列表中标记了孤立图像,因此您可以决定保留还是删除它们。 ”
ImageManager(免费/付费版本)
“ ImageManager for Joomla!允许您移动和重命名图像,而不会丢失文章和自定义HTML模块中的图像链接。只需拖放图像即可重组和清理网站。它还可以列出所有未使用的图像并删除它们”。