换掉CakePHP说明首页

前提:你已經做好相關設定,如果還沒有的話,請見:CakePHP 1.2 簡易安裝與設定 
I. CakePHP 目錄說明:
在寫程式之前,先了解CakePHP是如果安排程式的目錄。基本上,1.1版和1.2版沒有什麼差別。
app 
cake 
docs 
index.php 
vendors 

app: 主要是放你網站的程式與靜態的html網頁。
cake: CakePHP的核心程式,當有問題時,也可以到這邊來拆解CakePHP的程式;因為目前CakePHP的說明還不是非常的完整,有時會需要用拆解程式的方式來了解如何使用。
docs: 顧名思義,就是放一些CakePHP的說明文件。
vendors: 如果你有使用其他open source的套件,可以放在這個地方。

app內的目錄:
config: 放設定檔的目錄,可以參考 CakePHP 1.2 簡易安裝與設定 。 
controllers: 放controller程式的目錄,不懂什麼是Controller? 請參考:CakePHP說明 - Controller 
locale: 放多國語言的訊息設定檔,這個也是CakePHP 1.2 的新功能。 
models: 放model 程式的目錄,不懂什麼是Model? 請參考:CakePHP說明 - Model 
plugins: 放別人寫好的CakePHP程式。 
tmp: 顧名思義,放一些暫存檔的目錄,有 log, cache 等。 
vendors: 同上面的vendors。 
views: 放網路程式版型的目錄。請參考:CakePHP說明 - View 
webroot: 放靜態網頁的目錄滿,包含圖片, javascript, css等。 

參考網頁: http://book.cakephp.org/view/19/cakephp-file-structure

II. 開始你的第一個程式:home_controller.php
首先在 your_cakephp1.2/app/controller 下產生一個檔名是 home_controller.php (為何是 程式_controller.php 方式命名?這是cakephp的規則,請照做!),內容如下:
<?php
class HomeController extends AppController {
public $name = 'Home';
public $uses = null;
// 首頁
public function index() {
}// end index
}
?>

在 your_cakephp1.2/app/views 下,產生一個目錄是 home,在 your_cakephp1.2/app/view/home/ 下,產生一個檔名是 index.ctp (註:1.1的副檔名是.thtml,1.2是 .ctp)。index.ctp內容如下:
<div>
<?php
echo 'hello world';
?>
</div>

程式完成後,請到 app/config下,修改 routes.php 把預設的 Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home')); 改成 Router::connect('/', array('controller' => 'home', 'action' => 'index', 'index')); 下面另外兩個設定,基本上也不需要了,可以把它們註解! 

完成上面的步驟,再重新訪問你的網站,就可以看到你首頁的內容了。不過版型還是很奇怪,主要是因為現在的版型外框還是套用cakePHP的版型。請copy一份 your_cakephp1.2/cake/libs/layouts/default.ctp 到 your_cakephp1.2/app/views/layouts下。原本的 default.ctp 內容如下:
<?php
/* 一堆註解... (省略)*/
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>
<?php __('CakePHP: the rapid development php framework:'); ?>
<?php echo $title_for_layout; ?>
</title>
<?php
echo $html->charset();
echo $html->meta('icon');
echo $html->css('cake.generic');
echo $scripts_for_layout;
?>
</head>
<body>
<div id="container">
<div id="header">
<h1><?php echo $html->link(__('CakePHP: the rapid development php framework', true), 'http://cakephp.org'); ?></h1>
</div>
<div id="content">
<?php
if ($session->check('Message.flash')):
$session->flash();
endif;
?>
<?php echo $content_for_layout; ?>
</div>
<div id="footer">
<?php echo $html->link(
$html->image('cake.power.gif', array('alt'=> __("CakePHP: the rapid development php framework", true), 'border'=>"0")),
'http://www.cakephp.org/',
array('target'=>'_new'), null, false
);
?>
</div>
</div>
<?php echo $cakeDebug; ?>
</body>
</html>
其實index.ctp,可以當成是.php程式,可以有html和php程式碼。

Header內的程式碼:
<?php __('CakePHP: the rapid development php framework:'); ?> 這一行可以刪除,網頁的title總不能顯示不是我們網站的訊息吧。
<?php echo $title_for_layout; ?> 建議保留,如此一來,每個Controller的action可以自行定義網頁的title。當然如果不需要的話,也可刪除,直接填上你的網站title。
echo $html->charset(); 建議保留,會去讀取 core.php 的App.encoding設定(預設是UTF-8)。
echo $html->meta('icon'); favicon 設定,可以刪除,改成自己的
echo $html->css('cake.generic'); css 設定,可以刪除,改成自己的。
echo $scripts_for_layout; javascript 程式,可以刪除。

Body內的程式碼:
除了 <?php echo $content_for_layout; ?> 外,其他都可以替換成自己的內容。<?php echo $content_for_layout; ?>主要是CakePHP處理版型時會用到的,也就是顯示剛剛的index.ctp內容的地方。另外,<?php echo $cakeDebug; ?> 也建議保留,在開發模式(core.php中的 Configure::write('debug', 3))時,會顯示所有的變數內容,當改成release模式時(core.php中的 Configure::write('debug', 0)),這裏是不會顯示任何內容的!

如果完成上面的步驟,已經改寫首頁了!
原文http://otaku.kigi.tw/2008/03/cakephp-12-cakephp.html

posted @ 2009-05-11 16:08  derrck  阅读(669)  评论(0编辑  收藏  举报