多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 八、开发主题 在主题的开发当中,开发者需要先熟悉Thinkphp的模板开发,建议系统化学习Thinkphp模板开发章节,如果有时间的话,还可以考虑系统化学习Thinkphp开发。 在OpenSNS的系统中,我们建立了另外一种集中的方式来开发主题。学习本章,可以明白如何去开发主题。 一、目录结构 在theme中创建一个类似blue的文件夹,里面的info.php必须填,然后再里面创建对应的模块文件夹,然后把Application/ucenter/view里面的文件拷贝过来,然后修改样式。 上图是默认模板与新模版对应关系。 下图为主题的目录结构 特别注意!!!主题的目录结构里没有 default 这个主题目录,所以构建目录的时候,拷贝模板进去,必须剥离掉default这层目录。大部分主题无效就是这个原因导致的。 1 View/Index/edit.html 而不是 1 View/default/Index/edit.html 二、主题信息的录入 标准的Info.php格式 <?php return array( //模版名 'name' => 'T4', //别名 'title' => '仿TS4.0风格', //版本号 'version' => '1.0.0', //是否商业模版,1是,0,否 'is_com' => 0, //模版描述 'summary' => '简单模仿T4的设计风格。', //开发者 'developer' => '郑恒盛', //开发者网站 'website' => 'http://www.ourstu.com', ); 上述代码中,就是一个标准的Theme的info.php文件,大家可以对应修改。这些信息将会被主题系统所导入。 配置表单就这么生成了,不过你生成的表单可能没数据,这个先不管。到此,差不多大家心里有个数了。下面我们再讲讲一些开发中要遇到的问题。 1.怎么设置默认值? 2.怎么保存为一个配置项,到前台模块中调用到? 对于第一点,我们这边有一个办法:调用builder的data()方法,存入一个键值对数组,调用这个方法后,系统会自动根据键值对填充内容到表单里。 对于第二点,OC提供了一个handleConfig()方法来自动保存配置,同时前台也提供了一个modC('键名','默认值','Controller名')的配置项读取方法。根本不需要开发者去管数据库读写的问题。 像我们上面的 1 $builder = new AdminConfigBuilder(); $data = $builder->handleConfig(); 仅用一行代码,就完成了对表单数据的保存,同时可以用modC()函数到前台去调用。完全不用考虑复杂的逻辑,这就是builder的魅力之所在。 同样的,我们可能会涉及到第一个问题和第二个问题结合的情况: 怎么给作为配置项的表单设置默认值? 1 $data['OPEN_LOGIN_PANEL'] = $data['OPEN_LOGIN_PANEL'] ? $data['OPEN_LOGIN_PANEL'] : 1; 将handleConfig取回的data进行无值判断,最后分号前的那个值就是默认值。 当然,前台要调用的时候也有这个默认值,就需要用modC的第二个参数来给了。 这边有一个比较麻烦的地方就是modC的默认值和后台设置的默认值可能不统一,而且在多次要读取配置项的时候会需要在modC里不断设置默认值。这一点,似乎通过现在的builder机制还无法实现,只能是笨笨地多次设置。