在使用Dedecms(织梦CMS)时,很多用户希望实现图片按月存放的功能。这不仅有助于更好地管理文件,还能提升网站的SEO效果。本文将详细介绍如何通过修改代码来实现这一功能。


// 获得下载媒体的随机名称
function GetRndName($url, $v) {
    global $cfg_image_dir, $cfg_dir_purview;
    $this->mediaCount++;
    $mnum = $this->mediaCount;
    $timedir = "c" . MyDate("ym", time()); // 修改此处,去掉原有的d即可按月存放

    // 存放路径
    $fullurl = preg_replace("//{1,}/", "/", $cfg_image_dir . "/");
    if (!is_dir($GLOBALS['cfg_basedir'] . "/" . $fullurl)) {
        MkdirAll($GLOBALS['cfg_basedir'] . "/" . $fullurl, $cfg_dir_purview);
    }

    $fullurl = $fullurl . $timedir . "/";
    if (!is_dir($GLOBALS['cfg_basedir'] . "/" . $fullurl)) {
        MkdirAll($GLOBALS['cfg_basedir'] . "/" . $fullurl, $cfg_dir_purview);
    }
}
    

要实现图片按月存放,首先需要打开Dedecms的include/dedecollection.class.php文件。找到GetRndName函数,并按照上述代码进行修改。

接下来,我们还需要对后台及远程下载的存放方法进行调整:

1. 打开后台目录(默认为dede),找到media_add.php文件。定位到如下代码:
原代码: $dpath = MyDate("ymd", $uptime);
修改为: $dpath = MyDate("ym", $uptime);
完成此步后,后台上传的文件将会按月份自动分类存储。

2. 对于远程图片的本地化存储,我们需要进一步修改dede/inc/inc_archives_functios.php文件。找到以下代码:
原代码: $imgUrl = $cfg_uploaddir.'’/.MyDate("ymd",time());
修改为: $imgUrl = $cfg_uploaddir.'’/.MyDate("ym",time());
从此以后,所有从远程下载并本地化的图片都会按照月份保存。

通过以上步骤,您可以轻松地让Dedecms实现图片按月存放的功能。这不仅提升了文件管理的效率,还可能间接改善您的网站SEO表现,因为清晰的文件结构更受搜索引擎青睐。