在使用Dedecms进行内容管理时,您可能会遇到上传附件目录不统一的问题。例如,当我们将后台的附件目录调整为Ym(默认为Ymd)时,发现不同场景下的附件路径仍然存在差异。

从文章中上传的路径可能为:/Ym/1.jpg。
而从附件中上传的路径则可能是:/Ymd/1.jpg(系统默认值)。
如果是通过采集功能获取的内容,其路径可能是:/cYmd/1.jpg(同样为系统默认设置)。

为了确保所有上传路径的一致性,我们需要对以下几个方面进行修复:

修复附件上传路径

第一步是修复附件上传的路径问题。这需要我们修改文件 /dede/media_add.php。


// 找到以下代码
$dpath = MyDate("ymd", $uptime);

// 修改为
$dpath = MyDate($cfg_addon_savetype, $uptime);
    

完成上述修改后,请保存并重新上传文件。此时,从附件上传的路径问题应该已经解决。

修复采集功能中的路径问题

如果您还使用了Dedecms的采集功能,那么接下来的部分同样重要。首先,打开文件 /include/dedecollection.class.php,并进行如下修改:


// 找到以下代码
global $cfg_image_dir,$cfg_dir_purview;

// 修改为
global $cfg_image_dir,$cfg_dir_purview,$cfg_addon_savetype;
    

增加全局变量 $cfg_addon_savetype 的读取。

然后继续寻找以下代码:


// 找到以下代码
$timedir = "c".MyDate("ymd",time());

// 修改为
$timedir = "c".MyDate($cfg_addon_savetype,time());
    

如果希望去掉路径前缀的“c”,可以进一步修改为:


$timedir = MyDate($cfg_addon_savetype,time());
    

自动获取和下载文章内的图片和资源

最后一步涉及自动获取和下载文章内的图片和资源。这需要修改文件 /dede/inc/inc_archives_functions.php。


// 找到以下代码
global $cfg_multi_site,$cfg_basehost,$cfg_basedir,$cfg_image_dir;

// 修改为
global $cfg_multi_site,$cfg_basehost,$cfg_basedir,$cfg_image_dir,$cfg_addon_savetype;
    

接着,找到以下代码并进行替换:


// 找到以下代码
$imgUrl = $cfg_uploaddir.'/'.MyDate("ymd", time());

// 修改为
$imgUrl = $cfg_uploaddir.'/'.MyDate($cfg_addon_savetype,time());
    

完成以上所有步骤后,您的Dedecms系统中附件上传路径将更加统一且符合预期设置。这些更改不仅提高了系统的整洁度,也便于后续维护与管理。

注意:
在进行任何文件修改之前,请确保备份原始文件,以便在出现问题时能够快速恢复。