您的位置:首页 > 其它

dedecms 个人空间风格自定义方法

2010-04-24 23:18 232 查看
某天下午偷懒,上班时间自个儿玩起了dedecms代码。由于在产品班一直对老师教的写死风格模板方法耿耿于怀,总觉得写死代码这是对原作者智慧结晶的一种亵渎。我们应该让数据能够按照原来的走向,稍加扩展来完成我们的目的,嘿嘿。
废话少说,入正题!将我的整个探索过程记录其下:
找到空间风格相关文件spaceskin.php,开始分析代码。按照正常的数据流向,首先读取用户的默认风格数据

$userrow = $dsql->GetOne("Select spacestyle From `#@__member_space` where mid='".$cfg_ml->M_ID."' ");
不难推断#@__member_space就是记录用户使用风格的数据表,$cfg_ml就是用户登录实例,M_ID为默认风格ID。
再往下看,spaceskin.htm文件被包含进来,且该文件唯一的动态数据部分为ListSkin(),可想该函数就是生成整个风格模板数据的关键函数,于是开始着手分析。
果然不出所料,在该函数处发现一个关键文件skinlist.inc--记录风格模板列表。程序就是通过这个列表文件读取模板存放的目录,并读取目录中有无包含info.txt文件,从中读取模板的名称,demo图片,文件夹名称,作者,日期等相关信息,生成风格模板的显示表格。从以上分析,我们清楚了解到,想加入自定义的风格模板,只要从3个部分入手
1、将风格模板复制到member/space目录下,并在skinlist.inc添加上文件夹的名称。
2、为自定义模板创建info.txt文件,这里要注意的是一定要空出一行,也就是name:***要在第二行出现,否则无法正常获取到模板的名称,至于原因,我也不知道。
3、添加一个demo图片,这个不是必须的,没有的话也不影响操作。

仅以上三步,就能添加入自己的风格模板了,无需改源代码,十分方便。

新函数知识:
1、eregi_replace( string pattern, string replacement, string string )
不区分大小写替换正则表达式
pattern 正则表达式
replacement 要替换成的字符串
string 字符串

2、file_exists ( string filename )
检查文件或目录是否存在,如果由 filename 指定的文件或目录存在则返回 TRUE,否则返回 FALSE
filename 文件目录

3、is_dir ( string filename )
判断给定文件名是否是一个目录,如果文件名存在并且为目录则返回 TRUE。如果 filename 是一个相对路径,则按照当前工作目录检查其相对路径。
filename 文件路径

4、opendir ( string path [, resource context] )
打开目录句柄
patch 要打开的目录
context 不祥

5、readdir ( resource dir_handle )
从目录句柄中读取条目,返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。
dir_handle 目录句柄
例:

$fp = opendir($dir);
while ($sysname = readdir($fp))
{
$dirs[] = $sysname;
}

6、closedir ( resource dir_handle )
关闭目录句柄,关闭由 dir_handle 指定的目录流。流必须之前被 opendir()[/b] 所打开。
dir_handle 目录句柄

7、filemtime ( string filename )
取得文件修改时间,返回文件上次被修改的时间,出错时返回 FALSE。时间以 Unix 时间戳的方式返回,可用于 date()[/b]
filename 文件路径本文出自 “超越梦想” 博客,请务必保留此出处http://tider.blog.51cto.com/1290647/304254
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: