Discuz Mini-Space 模板结构以及功能拓展手册
Mini-Space发布后,估计很多人希望制作自己站点的 Mini-Space 风格及模块吧,再此,我向大家介绍下 Mini-Space 模板、风格以及模块的开发方法
一、Mini-Space 的模板结构
Mini-Space 采用一套模板文件多套 CSS 的方式切换模板,因此所有风格的 Mini-Space 其实都是在使用一套模板。
模板文件在 templates/default 目录下
[table][tr][td=1,1,200][b]space.htm[/b]
Space 主模板
[/td][td]Space 所有页面都需要调用的模板文件,模板分为以下几块:
顶部区 menu_top
头部区 header
菜单区 menu
模块区 main_layout0 代表左侧 main_layout1 代表中间、main_layout2 代表右侧
尾部区 footer
[/td][/tr][tr][td][b]space_topic.htm[/b]
Space 文集页模板
[/td][td]显示文集内容的模板,模板分为以下几块:
文集主题 module_topic
文集评论 module_topiccomment
[/td][/tr][tr][td][b]space_module.htm[/b]
Space 各个模块的模板
[/td][td]此模板存放了 Space 的各个模块的子模板,其中通过函数的形式定义了各个模块的子模板,包含如下函数:
特殊主题前缀 threadspecial 此函数不是模块模板,而是以下每个模块都需要用到的部分
用户信息模块 userinfo
文集日历模块 viewcalendar
主题模块 mythreads
回复模块 myreplies
悬赏模块 myrewards
交易模块 mytrades
文集模块 myblogs
发表文集模块 postblog
最热文集模块 hotblog
收藏的论坛模块 myfavforums
收藏的主题模块 myfavthreads
好友模块 myfriends
各个模块函数的模板语法基本结构为:
模块显示在单独列表页时的模板
模块显示在首页中间时的模板
模块显示在首页左右两侧时的模板
[/td][/tr][/table]
viewpro.htm 为 Space 为Space的个人信息页模板,viewpro_classic.htm 为老版个人信息页模板,当 Mini-Space关闭、用户被禁或者拥有X-Space个人空间后的模板。
二、Mini-Space 的风格文件结构
Mini-Space 的所有风格均放置在 mspace 目录下,一个子目录一个风格,站长要添加风格的话,只需要将风格目录复制或上传到 mspace 目录下即可。
每个风格目录中文件的含义如下:
[table][tr][td]style.ini
风格的识别文件
[/td][td]当目录中包含此文件的时候才被论坛识别为一个合法的风格目录,此文件的内容有三行文字,每行的含义为:
1: 风格名称
2: 风格版权
3: 风格版本
如:
QUOTE:
默认风格
Discuz!
1.0
[/td][/tr][tr][td]style.css
风格的样式表
[/td][td]此文件为风格的 CSS 样式表文件,风格以及模块的样式定义均在此文件中,此文件中模块含义的 CSS 定义如下:
用户信息模块 #module_userinfo
主题模块 #module_threads
回复模块 #module_replies
文集模块 #module_blogs
文集主题 #module_topic
文集评论 #module_topiccomment
文集发表评论 #module_postcomment
发表文集模块 #module_postblog
最热文集模块 #module_hotblog
悬赏模块 #module_rewards
交易模块 #module_trades
好友模块 #module_friends
收藏的论坛模块 #module_favforums
收藏的主题模块 #module_favthreads
[/td][/tr][tr][td]图片文件[/td][td]风格所用到的图片文件[/td][/tr][/table]
三、模块拓展
模块的拓展主要修改 include/space.func.php 和风格的 space_module.htm 文件。
include/space.func.php
打开此文件,开头我们首先会看到如下2个数组
$modulesettings = array(
'userinfo' => array('1', 0, 1),
'calendar' => array('1', 0),
'myblogs' => array('', 1),
'mythreads' => array('', 1),
'myreplies' => array('', 1),
'myrewards' => array('', 1),
'mytrades' => array('', 1),
'myfriends' => array('1', 2),
'myfavforums' => array('1', 2),
'myfavthreads' => array('1', 2)
);
$listmodule = array(
'myblogs' => 1,
'mythreads' => 2,
'myreplies' => 3,
'myrewards' => 4,
'mytrades' => 5,
'myfavforums' => 6,
'myfavthreads' => 7
);
$modulesettings 为 Space 模块的声明数组,所有的标准模块均在此处声明,含义为:
'模块标识名' => array('不允许出现的位置', 默认位置, 隐藏更多链接)
位置中数字0代表左侧、1代表中间、2代表右侧,不允许出现的位置如果不允许出现在2个位置,用逗号分割
$listmodule 为包含列表内容模块的声明数组,所有的包含列表内容的模块在此处声明,含义为:
'模块标识名' => 菜单顺序
当您需要添加一个新的模块时,您需要在 $modulesettings 数组中添加他的模块标识,如
'mytest' => array('', 0,1)
表示此模块允许出现在所有位置,默认位置为左侧,且模块头不显示更多的链接
然后在 space_module.htm 中添加名为 mytest 的函数即子模板
要为此模块命名,可以修改 spaces.lang.php 文件
添加语言包项
'mytest' => '测试模块'
最后设置一个$spacelimitmytest 的变量让他值为 1,就算开启了
此变量可以通过添加后台的基本设置中添加一个设置项,也可以固定的写在程序中。
[link]
评论