2011-05-14 46 views
2

現在我必須在我所有的意見單獨添加標題是這樣的:Zend:如何在我的所有視圖中添加網頁標題?

<head> 
     <title>TestProject - Home</title> 
</head> 

<head> 
     <title>TestProject - Dashboard</title> 
</head> 

現在,如果我想改變TestProject標題的一部分,那麼我必須改變它在我所有的意見。我如何在BootStrap.php中提到這一點,並將它添加到所有視圖中?每當我必須改變這一點時,我會在一個地方改變它。

+0

我注意到你發佈比較少的職位,我只是想仔細檢查,你有沒有讀過Zend Quickstart?可能會幫助你解決一些問題 – Ascherer 2011-05-15 11:09:49

回答

4

bootstrap.php中

protected function _initViewHelpers() { 
    $view = new Zend_View(); 
    $view->headTitle('Main Title')->setSeparator(' - '); 
} 

在任何視圖/一個.phtml

<?php 
    $this->headTitle()->prepend('Page Title'); 
    echo $this->headTitle(); 
?> 
4

使用layoutsplaceholders進行調查。佈局適用於所有視圖,您可以在那裏設置標題。在您的控制器中,您可以將「主頁」或「儀表板」部分設置爲將由佈局使用的佔位符。

+1

確切地說,這類事情完全在MVC的View域中。佈局將有'echo $ this-> headTitle() - > setSeparator(' - ').prepend('TestProject');'' – Phil 2011-05-15 02:59:20

1

我認爲你可以做到這一點與JS就像你剛纔網站標題= TestProject只有在每個你可以使用JavaScript頁面讀取那麼標題,如果你正在使用類似的母版頁串聯額外的標題

9

您應該查看headTitle視圖幫助程序。您可以將下面的代碼片段放在引導文件中(從文檔http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.headtitle)。

// setting the controller and action name as title segments: 
$request = Zend_Controller_Front::getInstance()->getRequest(); 
$this->headTitle($request->getActionName()) 
    ->headTitle($request->getControllerName()); 

// setting the site in the title; possibly in the layout script: 
$this->headTitle('Test Project'); 

// setting a separator string for segments: 
$this->headTitle()->setSeparator('/'); 

然後你就可以在控制器單獨設置每個頁面的標題是這樣的:

$this->view->headTitle('The page name') 

渲染的標題看起來就像這樣:

<title>Test Project/The page name</title> 

哦,你需要這個你佈局腳本所在的標籤:

<?php echo $this->headTitle() ?> 
2

這是設置頁標題到控制器最佳方式。如果你想設置新的標題,然後使用..

public function init() 
{ 
    $this->view->headTitle('My title'); 
} 

如果你想在前面加上現有標題標題,然後使用

$this->view->headTitle()->setSeparator(' - ')->prepend('Manager'); 
相關問題