纯属闲着无聊的- -!,前两天一直研究dede,放弃了。无聊最近准备研究ThinkPHP,但是ThinkPHP生成的目录的结构让我很郁闷,个人还是比较喜欢dede之类的那种比较简单的结构,所以今天就下手改了一下。现在分享出来给大家。
1.先修改生成项目目录的主体结构,这个不需要修改ThinkPHP的源码(也可以修改,如果是初学者,最好还是先别修改了)
新建index.php入口文件,然后不按照手册新建项目。输入以下代码;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$root=dirname(__FILE__);
$root=str_replace('\\', '/', $root);
define('__ROOT__',$root); //网站根目录
define('LIB_PATH', __ROOT__.'/libs/');
define('CONF_PATH', __ROOT__.'/config/'); //配置文件目录
define('LANG_PATH', __ROOT__.'/lang/'); //语言目录
define('TMPL_PATH', __ROOT__.'/templates/'); //目录文件
define('HTML_PATH', __ROOT__.'/a/'); //生成静态页面目录
define('RUNTIME_PATH',__ROOT__.'/cache/'); //缓存目录
define('LOG_PATH', RUNTIME_PATH.'/log/');
define('TEMP_PATH', RUNTIME_PATH.'/temp/');
define('DATA_PATH',RUNTIME_PATH.'/data/');
define('CACHE_PATH', RUNTIME_PATH.'/cache/');
define('APP_DEBUG', true); //开启调试
require_once 'core/ThinkPHP.php';
这样就可以生成目录了.基本结构就是
[QQ截图20130904154102.png]
我把ThinkPHP文件夹重命名成core了.
2.如果想把Action和Model文件夹也直接放在网站根目录的话,可以直接修改ThinkPHP/Common/runtime.php中第177行左右
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function build_app_dir() {
// 没有创建项目目录的话自动创建
if(!is_dir(APP_PATH)) mkdir(APP_PATH,0755,true);
if(is_writeable(APP_PATH)) {
$dirs = array(
LIB_PATH,
RUNTIME_PATH,
CONF_PATH,
COMMON_PATH,
LANG_PATH,
CACHE_PATH,
TMPL_PATH,
TMPL_PATH.C('DEFAULT_THEME').'/',
LOG_PATH,
TEMP_PATH,
DATA_PATH,
LIB_PATH.'Model/',
LIB_PATH.'Action/',
LIB_PATH.'Behavior/',
LIB_PATH.'Widget/',
);
foreach ($dirs as $dir){
if(!is_dir($dir)) mkdir($dir,0755,true);
}
// 写入目录安全文件
build_dir_secure($dirs);
// 写入初始配置文件
if(!is_file(CONF_PATH.'config.php'))
file_put_contents(CONF_PATH.'config.php',"'配置值'\n);\n?>");
// 写入测试Action
if(!is_file(LIB_PATH.'Action/IndexAction.class.php'))
build_first_action();
}else{
header('Content-Type:text/html; charset=utf-8');
exit('项目目录不可写,目录无法自动生成!
请使用项目生成器或者手动生成项目目录~');
}
}
改成
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function build_app_dir() {
// 没有创建项目目录的话自动创建
if(!is_dir(APP_PATH)) mkdir(APP_PATH,0755,true);
if(is_writeable(APP_PATH)) {
$dirs = array(
LIB_PATH,
RUNTIME_PATH,
CONF_PATH,
COMMON_PATH,
LANG_PATH,
CACHE_PATH,
TMPL_PATH,
TMPL_PATH.C('DEFAULT_THEME').'/',
LOG_PATH,
TEMP_PATH,
DATA_PATH,
__ROOT__.'Model/',
__ROOT__.'Action/',
__ROOT__.'Behavior/',
__ROOT__.'Widget/',
);
foreach ($dirs as $dir){
if(!is_dir($dir)) mkdir($dir,0755,true);
}
// 写入目录安全文件
build_dir_secure($dirs);
// 写入初始配置文件
if(!is_file(CONF_PATH.'config.php'))
file_put_contents(CONF_PATH.'config.php',"'配置值'\n);\n?>");
// 写入测试Action
if(!is_file(LIB_PATH.'Action/IndexAction.class.php'))
build_first_action();
}else{
header('Content-Type:text/html; charset=utf-8');
exit('项目目录不可写,目录无法自动生成!
请使用项目生成器或者手动生成项目目录~');
}
}
3.模板目录,直接仿造dede的那种
修改ThinkPHP/Lib/Core/View.class.php 第144行 parseTemplate这个方法,具体是在第183行。修改完的代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public function parseTemplate($template='') {
if(is_file($template)) {
$group = defined('GROUP_NAME')?GROUP_NAME.'/':'';
$theme = C('DEFAULT_THEME');
// 获取当前主题的模版路径
if(1==C('APP_GROUP_MODE')){ // 独立分组模式
define('THEME_PATH', dirname(BASE_LIB_PATH).'/'.$group.basename(TMPL_PATH).'/'.$theme);
define('APP_TMPL_PATH',__ROOT__.'/'.APP_NAME.(APP_NAME?'/':'').C('APP_GROUP_PATH').'/'.$group.basename(TMPL_PATH).'/'.$theme);
}else{
define('THEME_PATH', TMPL_PATH.$group.$theme);
define('APP_TMPL_PATH',__ROOT__.'/'.APP_NAME.(APP_NAME?'/':'').basename(TMPL_PATH).'/'.$group.$theme);
}
return $template;
}
$template = str_replace(':', '/', $template);
// 获取当前主题名称
$theme = $this->getTemplateTheme();
// 获取当前模版分组
$group = defined('GROUP_NAME')?GROUP_NAME.'/':'';
if(defined('GROUP_NAME') && strpos($template,'@')){ // 跨分组调用模版文件
list($group,$template) = explode('@',$template);
$group .= '/';
}
// 获取当前主题的模版路径
if(1==C('APP_GROUP_MODE')){ // 独立分组模式
define('THEME_PATH', dirname(BASE_LIB_PATH).'/'.$group.basename(TMPL_PATH).'/'.$theme);
define('APP_TMPL_PATH',__ROOT__.'/'.APP_NAME.(APP_NAME?'/':'').C('APP_GROUP_PATH').'/'.$group.basename(TMPL_PATH).'/'.$theme);
}else{
define('THEME_PATH', TMPL_PATH.$group.$theme);
define('APP_TMPL_PATH',__ROOT__.'/'.APP_NAME.(APP_NAME?'/':'').basename(TMPL_PATH).'/'.$group.$theme);
}
// 分析模板文件规则
if('' == $template) {
// 如果模板文件名为空 按照默认规则定位
$template = MODULE_NAME . C('TMPL_FILE_DEPR') . ACTION_NAME;
}elseif(false === strpos($template, '/')){
// $template = MODULE_NAME . C('TMPL_FILE_DEPR') . $template;
}
return THEME_PATH.C('default').$template.C('TMPL_TEMPLATE_SUFFIX');
}
现在测试一下,在根目录下Action中新建IndexAction.class.php
1
2
3
4
5
6
7
8
// 本类由系统自动生成,仅供测试用途
class IndexAction extends Action {
function index(){
$this->assign('title','测试标题');
$this->display('index');
}
}
然后访问测试。
阅读(1891) | 评论(0) | 转发(0) |