基于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
原创粉丝点击