EmWebAdmin 生成流程分析
继上一篇的简略的说明 EmWebAdmin 的地址以后下载,生成之后,这一篇讲一下该模板的生成流程
// 上一篇地址:
http://www.cnblogs.com/chenfulin5/p/6856379.html
EmWebAdmin
Makefile
1 all:
2 @chmod +x templates/bin/emWebAdmin
3 @templates/bin/emWebAdmin generate
4
5 clean:
6 @chmod +x templates/bin/emWebAdmin
7 @templates/bin/emWebAdmin clean
EmWebAdmin
templates/bin/emWebAdmin
// 如果在顶层目录执行 make all
// 则执行 templates/bin/emWebAdmin generate
10 contents=`ls custom/contents`
11 # 参数为生成
12 if [ $1 == 'generate' ]; then
13
14 # make output directory
15 if [ ! -d "output" ]; then
16 mkdir output 创建相应的目录
17 chmod 777 output
18 mkdir output/tpl
19 fi
21 # generate all php file
22 for content in $contents
# 以templates/gentelella/base.tpl 里面的内容为模板
# 替换里面的 ***** 内容为 custom/contents 文件夹内文件的名字
# 并重定向到 output 内,名字改为custonm/contents 文件夹内文件的名字,后缀改为 .php ,原为 .tpl
23 do
24 sed "s/\*\*\*\*\*\*\*\*/$content/g" templates/gentelella/base.tpl > output/`basename $content .tpl`.php
25 echo "generate `basename $content .tpl`.php over."
26
27 done
28
# 将 custom/common/ 里面的内容复制到 output 内
# 这里面主要包括 json配置文件目录,PHP接写json配置文件,并保存在Smarty变量中
# 自定义的 css 样式以及js 样式,登录界面以及登录处理
29 # copy custom/common .php file to output directory.
30 if [ -d "custom/common" ]; then
31 cp custom/common/* output/ -rf
32 fi
33
# 将 custom/contents 里面的模板文件拷贝到 output/tpl 用于最后生成相对应文件
34 # copy contents .php file to output/tpl directory.
35 if [ -d "custom/contents" ]; then
36 cp custom/contents/* output/tpl/ -rf
37 fi
38
# 将依赖库复制过去
39 # copy all dependents file(js, css, smarty lib) to output directory.
40 if [ -d "templates/dependents" ]; then
41 cp templates/dependents/* output/ -rf
42 fi
43
# 将另外一些模板文件复制过去
44 # copy theme templates to output/tpl directory.
45 if [ -d "templates/gentelella" ]; then
46 cp templates/gentelella/* output/tpl/ -rf
47 fi
48
# 这里面会复制一个很重要的 json 文件,在 templates/smarty/config 内
# 这个文件配置了想对应的调用文件以及你侧边栏会有相对应的菜单
49 # copy smarty template config, preprocess file to output/tpl directory.
50 if [ -d "templates/smarty" ]; then
51 cp templates/smarty/preprocess/* output/tpl/ -rf
52 cp templates/smarty/config output/ -rf
53 fi
54
55 exit 0
56 fi
EmWebAdmin 生成流程分析的更多相关文章
- CobaltStrike逆向学习系列(2):Stageless Beacon 生成流程分析
这是[信安成长计划]的第 2 篇文章 关注微信公众号 [信安成长计划] 0x00 目录 0x01 Patch Beacon 0x02 Patch Loader 0x03 文件对比 0x04 流程图 C ...
- u-boot 流程分析
u-boot 介绍: 对于计算机来说 , 从一开始上机通电是无法直接启动操作系统的 , 这中间需要一个引导过程 , 嵌入式Linux系统同样离不开引导程序 , 这个启动程序就叫启动加载程序(Boot ...
- Android7.0 Phone应用源码分析(二) phone来电流程分析
接上篇博文:Android7.0 Phone应用源码分析(一) phone拨号流程分析 今天我们再来分析下Android7.0 的phone的来电流程 1.1TelephonyFramework 当有 ...
- ofbiz进击 。 ofbiz 退货流程(包含获取可退货项流程分析 以及 取消退货项的过程分析)
根据订单获取可退货项流程分析 退货的时候,调用 services_return.xml 中的获取可进行退货的退货项 getReturnableItems ,该服务调用了Java类 org.ofbi ...
- Android7.0 Phone应用源码分析(一) phone拨号流程分析
1.1 dialer拨号 拨号盘点击拨号DialpadFragment的onClick方法会被调用 public void onClick(View view) { int resId = view. ...
- HDFS2.x之RPC流程分析
HDFS2.x之RPC流程分析 1 概述 Hadoop提供了一个统一的RPC机制来处理client-namenode, namenode-dataname,client-dataname之间的通信.R ...
- spark 启动job的流程分析
从WordCount開始分析 编写一个样例程序 编写一个从HDFS中读取并计算wordcount的样例程序: packageorg.apache.spark.examples importorg.ap ...
- 【转】linux文件系统之mount流程分析
本质上,Ext3 mount的过程实际上是inode被替代的过程. 例如,/dev/sdb块设备被mount到/mnt/alan目录.命令:mount -t ext3 /dev/sdb /mnt/al ...
- 前端JS模版库kino.razor - 原理流程分析 - 改进版轮子RazorJs
1.前言 从后台获取数据,在前端JS里面拼接字符串,不累吗?敢不敢找一款前端使使... 现在这种模板库比较多了,我用过的jquery-template .JsRender .听说过的一堆,还有各种MV ...
随机推荐
- RS报表从按月图表追溯到按日报表
相信很多COGNOS开发人员看到这个标题就会感觉很轻松,追溯无非是COGNOS自带的一个下钻的功能,但是这里却是固定的条件: 要求1:A报表显示按月的图表B报表显示按日的明细 2:追溯到B的时候B的开 ...
- 求证:a^4+b^4 ≧a^3*b+a*b^3
证明: a4+b4-a3b-ab3 =a3(a-b)-b3(a-b) =(a3-b3)(a-b) =(a-b)2(a2+ab+b2) 而a2+ab+b2=a2+ab+b2/4+3b2/4=(a+b/2 ...
- 转:介绍shell_notifyicon,SendMessage,CallWindowProc,GetWindowLong,SetWindowLong的用法
Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias " Shell_NotifyIconA& ...
- 娓娓道来c指针 (4)解析c的声明语句
(4)解析c的声明语句 在继续探索c指针之前.有必要来解析下c语言中复杂的声明语法. 仅仅须要记住两则:一个原则,一个规则. 原则:先看标示符. 规则:运算符优先级是规则. 举例说明 1.最简单的 i ...
- 【TP3.2与TP5.0区别】
Tp3.2 和 Tp5.0之间的区别 5.0版本和之前版本的差异较大,本篇对熟悉3.2版本的用户给出了一些5.0的主要区别. URL和路由 5.0的URL访问不再支持普通URL模式,路由也不支持正 ...
- Python-try except else finally有return时执行顺序探究
学习python或者其他有异常控制的编程语 言, 大家很有可能说try except finally(try catch finally)的执行很简单,无非就是有异常的话执行except, final ...
- PHP-权限控制类(转)
<?php /** * 权限控制类 */ class include_purview { /** * 类的唯一实例 */ private static $instance; /** * 权限常量 ...
- sqlserver学习笔记(五)—— 查询
查询的基本语法结构: select 列名/* from 表名 [where 限制条件] [order by 排序] 1.查询全部的行和列: select * from 表名 2.查询部分行和列:(部分 ...
- Redis总结(一)Redis安装(转载)
最近项目中需要使用Redis,刚好这两天有时间,便总结记录一下Redis的安装,以及如何在.NET中使用Redis. Redis是一个用的比较广泛的Key/Value的内存数据库.目前新浪微博.Git ...
- 使用meta属性禁用手机浏览器的缩放功能
在移动设备浏览器上,通过为视口(viewport)设置 meta 属性为 user-scalable=no 可以禁用其缩放(zooming)功能.这样禁用缩放功能后,用户只能滚动屏幕,就能让你的网站看 ...