在DedeCMS(织梦内容管理系统)中,附件的保存形式默认是按天进行分类,即每天生成一个文件夹来存储当天上传的所有附件,这种保存方式虽然简单直观,但随着时间的推移,文件夹数量会不断增加,给维护和管理带来不便,为了解决这个问题,DedeCMS后台提供了一个选项“附件保存形式(按data函数日期参数)”,允许用户根据需要调整保存形式为按年、按月或按日,很多用户反映即使设置了这一选项,系统仍然按照默认的按天保存形式处理附件,导致设置无效。
原因分析
1、后台设置仅影响部分功能:
DedeCMS的后台设置“附件保存形式(按data函数日期参数)”主要影响通过FCK编辑器直接上传的文件,这意味着,如果用户是通过其他方式(如文章编辑中的图片本地化功能)添加附件,该设置可能不会生效。
当用户在文章编辑界面选择图片并设置为本地化时,系统会忽略后台的设置,仍然按照默认的按天保存形式处理附件。
2、代码实现的限制:
DedeCMS的部分核心代码硬编码了附件的保存路径,这导致即使用户在后台进行了设置,也无法改变这些硬编码的行为,在media_add.php
和inc_archives_functions.php
文件中,附件的保存路径被固定为按天保存。
要改变这些行为,需要直接修改相关文件的代码。
3、缓存机制的影响:
即使用户正确修改了代码并保存了设置,由于DedeCMS的缓存机制,新的设置可能不会立即生效,在这种情况下,用户需要清除缓存并重新生成页面以确保新设置能够被应用。
解决方案
1、修改后台设置:
确保在DedeCMS后台的“系统基本参数” > “附件设置”中将“附件保存形式(按data函数日期参数)”设置为所需的值(如“ym”表示按月保存)。
2、修改核心代码:
打开dede/media_add.php
文件,找到以下代码(通常在第25行左右):
“`php
$dpath = MyDate("ymd",$uptime);
“`
将其修改为:
“`php
$dpath = MyDate("ym",$uptime); // 按月保存
// 或
$dpath = MyDate("y",$uptime); // 按年保存
“`
打开dede/inc/inc_archives_functions.php
文件,找到以下代码(通常在第96行左右):
“`php
$imgUrl = $cfg_uploaddir.’/’.MyDate("ymd",time());
“`
将其修改为:
“`php
$imgUrl = $cfg_uploaddir.’/’.MyDate("ym",time()); // 按月保存
// 或
$imgUrl = $cfg_uploaddir.’/’.MyDate("y",time()); // 按年保存
“`
3、清除缓存并测试:
修改代码后,清除DedeCMS的缓存并重新生成页面,然后尝试通过不同的方式(如FCK编辑器上传、文章编辑中的图片本地化等)添加附件,以验证新的保存形式是否生效。
4、注意大小写:
在修改代码时,请注意MyDate
函数的参数大小写问题。MyDate("ymd")
与MyDate("Ymd")
的输出是不同的,前者表示年月日(如20150608),后者表示年月日时分秒(如20150608153047),在修改代码时请确保使用正确的大小写格式。
FAQs
1、Q: 为什么修改了后台设置但附件仍然按天保存?
A: 这是因为DedeCMS的后台设置“附件保存形式(按data函数日期参数)”仅影响通过FCK编辑器直接上传的文件,对于其他方式(如文章编辑中的图片本地化)添加的附件,需要直接修改相关文件的代码来实现按年或按月保存。
2、Q: 修改代码后是否需要重启服务器?
A: 不需要重启服务器,但在修改代码后,请确保清除DedeCMS的缓存并重新生成页面以确保新设置能够被应用。
3、Q: 如果我不想修改代码有没有其他方法可以实现按年或按月保存附件?
A: 如果不希望修改代码,可以考虑使用第三方插件或扩展来实现按年或按月保存附件的功能,但这些插件或扩展可能需要额外的费用或配置。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1115267.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复