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 ...
随机推荐
- Windows Xp不用安装软件管理多个远程桌面连接
一直使用系统默认的Mstsc来进行远程连接,但如果要连接N个远程的话就比较麻烦 之前也找过第三方的管理软件如:mRemoteNG 此软件有优点就不说了,但我在使用此软件时有一个很大的问题,就是如果一个 ...
- 自定义错误信息并写入到Elmah
在ap.net Web项目中一直使用Elmah进行日志记录, 但一直有一个问题困扰我很久,那就是我如何自己生成一个错误并记录到Elmah里去. 你知道有时你需要在项目中生成一个错误用于一些特殊的需求 ...
- Open DJ备份与恢复方案
最近接手了一个Cognos项目,第三方用户认证采用的是和Open DJ集成.本人之前很多采用的是cjap ,当然这和cjap相比起来简单的多了,最起码你不必具有Java的基础知识就可以完全驾驭了! 一 ...
- 一致性哈希算法(Consistent Hashing) .
应用场景 这里我先描述一个极其简单的业务场景:用4台Cache服务器缓存所有Object. 那么我将如何把一个Object映射至对应的Cache服务器呢?最简单的方法设置缓存规则:object.has ...
- (step6.1.1)hdu 1879(继续畅通工程——最小生成树、kruscal)
题目大意:输入一个整数n,表示有n个村庄.在接下来的n(n-1)/2行中,每行有4个整数begin end weight flag.分别表示从begin到end之间可以连通 ,他们之间的费用为w ...
- Python3.2官方文档翻译--迭代器
6.9 迭代器 到眼下为止.你可能已注意到很多容器对象都能够用for语句进行循环: 这样的訪问风格清楚简洁方便. 迭代器的应用是python遍历统一.在这样的场景背后.for语句调用容器对象iter( ...
- NET设计规范(二) 命名规范
http://blog.csdn.net/richnaly/article/details/6280294 第2章 命名规范 2.1. 大小写约定 2.1.1. 标识符的大小写规 ...
- TP框架M方法 create方法丢失字段问题
TP框架M方法 create方法丢失字段问题! thinkphp框架M方法 create方法丢失字段问题! thinkphp框架M方法 add方法字段丢失问题! 数据库 表新增了字段,用create方 ...
- ftp protocol
RFC http://www.w3.org/Protocols/rfc959/4_FileTransfer.html http://blog.chinaunix.net/uid-17238776-id ...
- PHP项目的“苦逼”经历与思考
PHP项目的"苦逼"经历与思考 PHP零基础.但因为项目人手不够的原因,被安排到一个用户"定制"项目. 该项目是用PHP生成的统计数据报表. 而用户又有新的3个 ...