Zend:如何在我的所有视图中添加网页标题?

时间:2011-05-14 13:29:26

标签: php zend-framework bootstrapping page-title

现在我必须在我的所有视图中分别添加标题,如下所示:

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

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

现在,如果我想更改标题的 TestProject 部分,那么我必须在所有视图中更改它。我怎么能在 BootStrap.php 中提到这一点并在所有视图中添加它?每当我必须改变它时,我会在一个地方改变它。

5 个答案:

答案 0 :(得分:10)

您应该查看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() ?>

答案 1 :(得分:4)

使用layoutsplaceholders。布局应用于您的所有视图,您可以在那里设置标题。在控制器中,您可以将“主页”或“仪表板”部分设置为布局将使用的占位符。

答案 2 :(得分: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();
?>

答案 3 :(得分:2)

这是将页面标题设置到控制器中的最佳方法。如果您想设置新标题,请使用..

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

如果您想使用现有标题添加标题,请使用

$this->view->headTitle()->setSeparator(' - ')->prepend('Manager'); 

答案 4 :(得分:1)

我认为你可以用js做这个,因为你只是站点title = TestProject然后在每个页面你可以用javascript读取标题然后连接额外的标题

如果您使用的是母版页