图样:

opencmf.php存在于每个模块的根目录,是模块配置文件。
能进行持久化配置参数保存,一开始我以为是写文件或者做缓存,后来在数据库中发现admin_module表,存储了每个模块的配置参数。
参数是数组key-value形式存储的,所以访问的时候只需要使用C('模块名_config.key').

    <div class="clearfix full-container">
<block name="jumbotron">
<div class="jumbotron jumbotron-primary jumbotron-background main-jumbotron text-center">
<h4>{:C('Equip_config.show_repaire_phone_num')}</h4>
</div>
</block> <div id="main" class="main">
<block name="main">这里是内容</block>
</div>
</div>

  Application/Home/View/Public/layout.html

<!doctype html>
<html lang="zh">
<head>
<meta charset="utf-8">
<block name="title"><title>{$meta_title}|{:C('WEB_SITE_TITLE')}-{:C('WEB_SITE_SLOGAN')}</title></block>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta name="author" content="{:C('WEB_SITE_TITLE')}">
<meta name="keywords" content="{$meta_keywords}">
<meta name="description" content="{$meta_description}">
<meta name="generator" content="CoreThink">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-title" content="{:C('WEB_SITE_TITLE')}">
<meta name="format-detection" content="telephone=no,email=no">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<link rel="shortcut icon" type="image/x-icon" href="__ROOT__/favicon.ico">
<link rel="apple-touch-icon" type="image/x-icon" href="__ROOT__/logo.png"> <link rel="stylesheet" type="text/css" href="__CUI__/css/cui.min.css">
<link rel="stylesheet" type="text/css" href="__HOME_CSS__/home.css">
<link rel="stylesheet" type="text/css" href="__PUBLIC__/libs/animate/animate.min.css">
<block name="style"></block>
<!--[if lt IE 9]>
<script src="http://cdn.bootcss.com/html5shiv/r29/html5.min.js"></script>
<script src="http://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<script type="text/javascript" src="__PUBLIC__/libs/jquery/1.x/jquery.min.js"></script>
</head> <body>
<div class="clearfix hook hook-page-header">
{:hook('PageHeader')} <!-- 文档开始钩子 -->
</div> <block name="wrap">
<div class="clearfix full-wrap">
<div class="clearfix full-header">
<block name="header">
<block name="top-nav">
<nav class="navbar navbar-default navbar-mini top-nav hidden-xs hidden-sm" role="navigation">
<div class="container">
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav" style="margin-left:-15px">
<li><a href="#">您好,欢迎来到 {:C('WEB_SITE_TITLE')} !</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<!-- 系统模块导航 开始-->
<opencmf:nav_list name="vo" pid="0">
<li>
<a target="{$vo.target}" href="{$vo.href}">
<span> {$vo.title}</span>
</a>
</li>
</opencmf:nav_list>
<!-- 系统模块导航 结束-->
</ul>
</div>
</div>
</nav>
</block> <block name="main-nav">
<nav class="navbar navbar-default main-nav" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-main">
<span class="sr-only">切换导航</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<php>if(C('WEB_SITE_LOGO')):</php>
<a class="navbar-brand" href="{:C('HOME_PAGE')}">
<img alt="logo" src="{$Think.config.WEB_SITE_LOGO|get_cover}">
</a>
<php>else:</php>
<a class="navbar-brand" href="{:C('HOME_PAGE')}">
<span>{:C('PRODUCT_LOGO')}</span>
</a>
<php>endif;</php>
</div>
<div class="collapse navbar-collapse navbar-collapse-main">
<ul class="nav navbar-nav navbar-left">
<li><a href="{:C('HOME_PAGE')}">首页</a></li>
<cms:category_list name="vo" pid="0" group="1">
<php>if($vo['_child']):</php>
<li class="dropdown">
<a href="{$vo.href}" class="dropdown-toggle" data-toggle="dropdown" role="button">
{$vo.title} <span class="caret"></span>
</a>
<ul class="dropdown-menu">
<volist name="vo._child" id="vo1">
<li>
<a href="{$vo1.href}">{$vo1.title}</a>
</li>
</volist>
</ul>
</li>
<php>else:</php>
<li>
<a href="{$vo.href}">
<span> {$vo.title}</span>
</a>
</li>
<php>endif;</php>
</cms:category_list>
</ul> <ul class="nav navbar-nav navbar-right">
<present name="_user_auth">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<img class="nav-img img-circle" src="{$_user_auth.avatar|get_cover='avatar'}" alt="{$_user_auth.nickname}">
<span">
{$_user_auth.nickname}
<span class="badge badge-danger">{$_new_message}</span> <!-- 新消息数量 -->
</span>
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href="{:U('User/Index/home', array('uid' => $_user_auth['uid']), true, true)}"><i class="fa fa-home"></i> 个人主页</a></li>
<volist name="_user_nav_main" id="vo_nav">
<li><a href="{:U($vo_nav['url'], null, true, true)}" class="{$vo_nav.class}"><i class="{$vo_nav.icon}"></i> {$vo_nav.title}</a></li>
</volist>
<li role="separator" class="divider"></li>
<li><a href="{:U('User/User/logout', null, true, true)}" class="ajax-get"><i class="fa fa-sign-out"></i> 注销登录</a></li>
</ul>
</li>
<else /> </present>
</ul>
</div>
</div>
</nav>
</block>
</block>
</div> <div class="clearfix full-container">
<block name="jumbotron">
<div class="jumbotron jumbotron-primary jumbotron-background main-jumbotron text-center">
<h4>{:C('Equip_config.show_repaire_phone_num')}</h4>
</div>
</block> <div id="main" class="main">
<block name="main">这里是内容</block>
</div>
</div> <div class="clearfix full-foooter">
<block name="footer">
<div class="footer">
<div class="container">
<div class="row">
<div class="col-sm-6 col-lg-6">
<h4>
<php>if(C('WEB_SITE_LOGO')):</php>
<img alt="logo" style="width:220px;" src="{$Think.config.WEB_SITE_LOGO|get_cover}">
<php>else:</php>
<h3><a href="{:C('WEBSITE_DOMAIN')}">{:C('PRODUCT_LOGO')}</a></h3>
<php>endif;</php>
</h4>
<p class="text-muted">{:C('WEB_SITE_DESCRIPTION')}</p>
</div>
<div class="col-sm-6 col-lg-5 col-lg-offset-1">
<div class="row">
<!-- 底部导航 开始 -->
<cms:footnav_list name="vo">
<div class="col-xs-4 footnav-list">
<h4><a>{$vo.title}</a></h4>
<ul class="list-unstyled">
<volist name="vo._child" id="vo1">
<li>
<a target="_blank" class="text-muted" href="{$vo1.url}">{$vo1.title}</a>
</li>
</volist>
</ul>
</div>
</cms:footnav_list>
<!-- 底部导航 结束 -->
</div>
</div>
</div>
<div class="row footer-bottom">
<ul class="list-inline text-center">
<li><span class="copyright">{:C('WEB_SITE_COPYRIGHT')}</span></li>
<li><a class="icp" href="http://www.miibeian.gov.cn/" target="_blank">{:C('WEB_SITE_ICP')}</a></li>
</ul>
</div>
</div>
</div>
</block>
</div>
</div>
</block> <div class="clearfix hook hook-page-footer">
{:hook('PageFooter')} <!-- 文档末尾钩子 -->
</div> <div class="clearfix full-script">
<div class="container-fluid">
<include file="$_user_login_modal" /> <!-- 登录弹窗 -->
<input type="hidden" id="corethink_home_img" value="__HOME_IMG__">
<script type="text/javascript" src="__CUI__/js/cui.min.js"></script>
<script type="text/javascript" src="__HOME_JS__/home.js"></script>
<block name="script"></block>
{:C('WEB_SITE_STATISTICS')} <!-- 站点统计代码 -->
</div>
</div>
</body>
</html>

  

corethink功能模块探索开发(十七)opencmf.php 配置文件的更多相关文章

  1. corethink功能模块探索开发(一)根据已有模块推测目录结构

    corethink是opencmf的一个开源版本,如果自己要进行二次开发,开发模块等,需要在官方开一个中级会员(50大洋吧),官网的一个“一键生成demo”就能给你最基础的目录结构,从而可以在此基础上 ...

  2. corethink功能模块探索开发(三)让这个模块可见

    感觉corethink把thinkphp的思想复用到淋漓尽致. 1.把opencmf.php文件配置好了后台该模块的菜单就能在安装后自动读取(分析好父子关系,否则页面死循环,apache资源占用率10 ...

  3. corethink功能模块探索开发(二)让这个模块可安装

    要想让这个模块可安装,只需要在opcmf.php文件中写一些配置数据就行 随便写点 Equip/opencmf.php <?php // 模块信息配置 return array( // 模块信息 ...

  4. corethink功能模块探索开发(五)开启这个模块的配置

    上图: 主要就是两点. 1.在opencmf.php中填写好配置页面的按钮还是文本域 Equip/opencmf.php只需要注意主要的配置数组的内容 <?php // 模块信息配置 retur ...

  5. corethink功能模块探索开发(四)让这个模块跑起来

    让这个模块跑起来,太费劲了,多半原因是自己太粗心,opencmf.php中“uid”写成了“pid”,de了好几天的bug也没有搞出来,又加上最近发生了些事(brokenhearted)... 上报错 ...

  6. corethink功能模块探索开发(六)让这个模块在前台显示

    效果图:(注意右上角) 实现模块的前台显示只需要在模块目录中的Controller目录建立IndexController.class.php,实现index方法.继承HomeController.就能 ...

  7. corethink功能模块探索开发(十八)前台页面插入jit前端数据可视化库

    效果图: 1.静态文件放入View目录中 在View目录下新建Public目录,在Public目录下新建js.css目录. 把jit的资源放入对应目录中 2.在html中引入jit Applicati ...

  8. corethink功能模块探索开发(十六)后台搜索功能

    效果图: 代码很简单,就是添加搜索框,搜索字段,在初始化页面查询的时候添加查询条件. 1.添加搜索框 添加到删除按钮后边. ->setSearch('请输入设备名称/MAC/宿舍号', U('i ...

  9. corethink功能模块探索开发(十五)后台新增按钮

    效果图: 1.首先添加数据列表上的新增按钮,让按钮显示出来 ->addTopButton('addnew') 2.让这个按钮行动起来,实现add方法 public function add(){ ...

随机推荐

  1. hadoop 调试mapperduce

    问题描述 运行hadoop的MapReduce示例,在running job卡住 在页面中显示一直处于 ACCEPTED Applications 状态 修改日志级别export HADOOP_ROO ...

  2. VS2015调用Matlab2017a环境配置(转载)

    VS2015调用Matlab2017a环境配置 一定要在Debug+x64平台下进行配置,x64,x64,x64!!!* 1.配置环境变量 右键计算机—–>属性——>高级系统设置——> ...

  3. python 多线程糗事百科案例

    案例要求参考上一个糗事百科单进程案例 Queue(队列对象) Queue是python中的标准库,可以直接import Queue引用;队列是线程间最常用的交换数据的形式 python下多线程的思考 ...

  4. 微软2016校园招聘4月在线笔试 hihocoder 1289 403 Forbidden

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 Little Hi runs a web server. Sometimes he has to deny acces ...

  5. SurvivalShooter学习笔记(三.敌人移动)

    1.敌人和玩家若存活,敌人始终朝着玩家所在位置移动,所以要给玩家物体一个Tag:Player从而找到玩家 2.敌人的自动寻路使用Unity自带的NavMeshAgent寻路组件寻路,要先把场景中不动的 ...

  6. VMThread占CPU高基本上是JVM在频繁GC导致,原因基本上是冰法下短时间内创建了大量对象堆积造成频繁GC。

    今天线上一个java进程cpu负载100%.按以下步骤查出原因. 1.执行top -c命令,找到cpu最高的进程的id 2.执行top -H -p pid,这个命令就能显示刚刚找到的进程的所有线程的资 ...

  7. Using Notepad++ To Quickly Format XML

    http://geek.sylvainw.com/2010/03/28/using-notepad-to-quickly-format-xml/ My favorite way to quickly ...

  8. [.NET网格计算框架] Alchemi

      Alchemi [.NET网格计算框架] 是 一个以使用简易为目的的Windows下的网格计算框架.它提供了:a)开发网格软件的编程环境 和 b)建造网格和运行网格软件的运行机制.       A ...

  9. 做好准备,让你的短信应用迎接Android 4.4(KitKat)

    Android团队通过Android开发博客透漏今年会放出Android 4.4 (KitKat) ,同时更新了 SMS 的部分API.博客上讲只有default SMS app才能对短信数据库有写权 ...

  10. 面试10大算法汇总——Java篇

    问题导读 1 字符串和数组 2 链表 3 树 4 图 5 排序 6 递归 vs 迭代 7 动态规划 8 位操作 9 概率问题 10 排列组合 11 其他 -- 寻找规律 英文版 以下从Java角度解释 ...