使用过DEDECMS的朋友都知道,在上传图片或附件时,系统会自动创建一个以当天日期命名的文件夹来存放这些文件。这种做法虽然有一定的组织性,但随着时间的推移,会产生大量的文件夹,给管理带来不便。那么,如何修改DEDECMS系统,使其按照月份保存附件,而不是每天创建一个新的文件夹呢?以下是具体的解决方案。
正常情况下,DEDECMS系统的图片和附件是按日保存的,即一天一个文件夹。时间长了,这会导致allimg目录中生成大量文件夹,极不方便管理。虽然在后台设置中有“附件保存形式”的选项,但其功能有限,尤其是在后台上传或进行图片本地化操作时,附件仍然会按日存放。因此,我们需要通过修改代码来实现全部图片和附件按月保存。
以下是具体步骤:
1. 后台设置按月保存
在DEDE V5.5后台,进入“系统 > 系统基本参数 > 附件设置”,找到“附件保存形式”这一项,默认值为ymd(即年月日)。将其改为ym,这样就可以按年月保存附件了。
不过,这个设置的作用有限,仅对FCK编辑器中的上传功能有效。如果你尝试通过“上传新文件”功能上传文件,或者在发表文章时选择图片本地化,文件仍然会按日存放。接下来,我们将对这两部分进行代码修改。
2. 修改“后台上传”功能,使其按月保存
打开后台文件夹中的media_add.php文件(默认路径为dede/),找到以下代码:
$dpath = MyDate("ymd", $uptime);
将其修改为:
$dpath = MyDate("ym", $uptime);
完成此修改后,你在后台上传文件时,文件将按月存放。
3. 修改“下载远程图片”功能,使其按月保存
同样在后台文件夹中,打开inc_archives_functions.php文件(默认路径为dede/inc/),查找以下代码:
$imgUrl = $cfg_uploaddir.'/'.MyDate("ymd", time());
将其修改为:
$imgUrl = $cfg_uploaddir.'/'.MyDate("ym", time());
完成此修改后,以后进行图片本地化操作时,附件也会按月保存。
总结
从上述修改可以看出,DEDECMS系统在创建文件夹时直接调用了MyDate函数,而没有对后台设置进行检查。因此,我们需要手动修改代码来实现按月保存的功能。当然,你也可以进一步优化代码,让系统根据后台设置动态判断保存方式,从而实现更灵活的功能。
通过以上步骤,你可以显著减少文件夹的数量,使附件管理更加高效和整洁。希望这篇文章对你有所帮助!