基于destoon更改内部模型样式
来源:互联网 发布:网络语言蛋炒饭的意思 编辑:程序博客网 时间:2024/05/17 02:24
基于destoon更改内部模型样式
二次开发原因:内部建立模型需要填写所属模型(如:文章),但如果有两块子模型,他们显示出来的样式是一样的,此开发可以实现子模型可以选择自己的样式。
一、实现功能开发:
开发思路:
在网站选择的默认样式风格文件夹里再创建文件夹,文件夹里面放的是样式文件和img,
在基本设置中可选择子样式,在输出模板改变路径可实现样式的改变。
流程:
1、创建数据表
DROP TABLE IF EXISTS `destoon_select_in_style`;CREATE TABLE `destoon_select_in_style` ( `module_id` smallint(5) unsigned NOT NULL, `style_name` varchar(40) NOT NULL COMMENT '内部样式文件夹名字', PRIMARY KEY (`module_id`)) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='内部样式文件夹表';
2、在\destoon\skin\default中增加these.name.php,在这文件中写入代码
再创建文件夹与代码数组中的键值同名,数组的value是后台下拉菜单的名称,必须要对应
3、在模型基本配置中输出选择的样式菜单(下拉菜单);
第一步:创建获取样式函数
//获取同模块样式表//$module=>module表中的字段function getStyle($module,$title='默认样式'){global $CFG,$moduleid,$db,$DT_PRE;include load('include.lang');$stydir =DT_ROOT.'/skin/'.$CFG['skin'].'/';;@include $stydir."these.name.php";$select = '<span id="destoon_instyle"><select name="setting[instyle]"><option value="">'.$title.'</option>';//判断是否有内部样式可以选择$files = glob($stydir.'*');if(!$files) msg('没有文件');$dirs=array();foreach($files as $k=>$v) {if(is_dir($v)) {$dirid= basename($v);if(isset($names[$dirid])){$dirs[$dirid]['dirname'] = $dirid;$dirs[$dirid]['name'] =$names[$dirid];}}}$pp=$db->get_one("SELECT * FROM {$DT_PRE}select_in_style WHERE module_id=$moduleid");foreach($dirs as $k=>$v){if($k==$pp['style_name']){$selected='selected="selected"';}else{$selected='';}$select .= '<option value="'.$k.'"'.$selected.'>'.$v['name'].'</option>';}$select .= '</select></span>';return $select;}<span style="font-family:Microsoft YaHei;font-size:18px;"></span>
第二步:后台模板输出
<tr><td class="tl">本模型样式模板</td><td><?php echo getStyle($module,'默认风格');?></td></tr>
可以放在当前内置模型后台模板输出的任意位置
第三步:写入数据库
//删除原有的样式$sql="delete FROM {$DT_PRE}select_in_style WHERE module_id=$moduleid";$db->query($sql);//写入最新的样式$sql="insert into {$DT_PRE}select_in_style values('".$moduleid."','".$setting['instyle']."')";$db->query($sql);
4、输出数据在前台模板;
第一步:代码写在根模型初始化文件中,这样所有子模型的样式都可获取到
/**********************************二次开发******************************************************///根据moduleid获取内部样式$pp=array();$pp=$db->get_one("SELECT*from {$DT_PRE}select_in_style WHERE module_id='$moduleid'");/**********************************二次开发******************************************************/
第二步:模板HTML中判断输出
{if $pp[style_name]}<link rel="stylesheet" type="text/css" href="{DT_SKIN}{$pp[style_name]}/style.css"/>{if $moduleid>4}<link rel="stylesheet" type="text/css" href="{DT_SKIN}{$pp['style_name']}/{$module}.css"/>{/if}{if $CSS}{loop $CSS $css}<link rel="stylesheet" type="text/css" href="{DT_SKIN}{$pp[style_name]}/{$css}.css"/>{/loop}{/if}{else}<link rel="stylesheet" type="text/css" href="{DT_SKIN}style.css"/>{if $moduleid>4}<link rel="stylesheet" type="text/css" href="{DT_SKIN}{$module}.css"/>{/if}{if $CSS}{loop $CSS $css}<link rel="stylesheet" type="text/css" href="{DT_SKIN}{$css}.css"/>{/loop}{/if}{/if}
模块功能内部样式选择就实现了,但本功能做的是文章模型的功能,如若其他根模型,还需去其他模板中加入相应的代码
扩展功能:
如若其他模型也要更改样式,只需在相关模型中两处地方添加代码即可
第一处:
第二处:
0 0
- 基于destoon更改内部模型样式
- 更改JS内部样式的写法
- destoon循环后结果指定不同样式
- destoon
- 创建内部样式表
- 内部样式表
- div+css内部样式
- 动态更改样式
- CSS样式更改
- CSS样式更改
- SWT更改鼠标样式
- flash 更改鼠标样式
- 如何更改菜单样式
- android 更改进度条样式
- ul li 更改样式
- AutoCompleteTextView更改样式
- Unity3d 更改鼠标样式
- WPF Expander更改样式
- 加载新布局
- 那些年遇到的Android Studio bugs
- Highcharts一些属性
- Android学习笔记之六-图片的修饰技术
- WEB开发的一些基础知识
- 基于destoon更改内部模型样式
- 66. Plus One (计算数字加1后的结果)
- 深入挖掘document.getElementsByTagName()方法的返回值
- 关于代码审查(Code Review)的一些建议
- request.getAttribute,request.getParameter的区别
- 829程序设计 笔记
- Unity网格介绍
- Linux C——信号量进程通信
- 2016.10.27每日总结