純屬閑著無聊的- -!,前兩天一直研究dede,放棄了。無聊最近準備研究ThinkPHP,但是ThinkPHP產生的目錄的結構讓我很鬱悶,個人還是比較喜歡dede之類的那種比較簡單的結構,所以今天就下手改了一下。現在分享出來給大家。
1.先修改產生項目目錄的主體結構,這個不需要修改ThinkPHP的源碼(也可以修改,如果是初學者,最好還是先別修改了)
建立index.php入口檔案,然後不按照手冊建立項目。輸入以下代碼;
$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';
這樣就可以組建目錄了.基本結構就是
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/1119441K6-0.png" title="QQ20130904154102.png" />
我把ThinkPHP檔案夾重新命名成core了.
2.如果想把Action和Model檔案夾也直接放在網站根目錄的話,可以直接修改ThinkPHP/Common/runtime.php中第177行左右
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',"<?php\nreturn array(\n\t//'配置項'=>'配置值'\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('項目目錄不可寫,目錄無法自動產生!<BR>請使用項目產生器或者手動產生項目目錄~'); }}
改成
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',"<?php\nreturn array(\n\t//'配置項'=>'配置值'\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('項目目錄不可寫,目錄無法自動產生!<BR>請使用項目產生器或者手動產生項目目錄~'); }}
3.模板目錄,直接仿造dede的那種
修改ThinkPHP/Lib/Core/View.class.php 第144行 parseTemplate這個方法,具體是在第183行。修改完的代碼
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
<?php// 本類由系統自動產生,僅供測試用途class IndexAction extends Action { function index(){ $this->assign('title','測試標題'); $this->display('index'); }}
然後訪問http://localhost/Index/index測試。
QQ2387183033 QQ群:252799167
本文出自 “尛雷” 部落格,請務必保留此出處http://a3147972.blog.51cto.com/2366547/1288607