如何在zend框架布局中更改元标记

kam*_*lot 9 php zend-framework meta-tags zend-layout

所以我在layout.phtml上设置了一些默认元标记

$this->headTitle() and $this->headMeta()->appendName()
Run Code Online (Sandbox Code Playgroud)

并在layout.phtml的标题中回显

我的问题是:如何从视图文件中更改这些默认元标记,以便替换它们?

我试过用:

$this->headMeta()->appendName() or setName()
Run Code Online (Sandbox Code Playgroud)

它不会替换旧的默认元标记,而是创建一个全新的元标记.我怎样才能更换它们?

Aro*_*eel 14

我刚试过这个,setName()应该可以工作:

<?php $this->headMeta()->setName('keywords', 'test'); ?>
<?php $this->headMeta()->setName('keywords', 'test'); ?>
Run Code Online (Sandbox Code Playgroud)

结果是:

<meta name="keywords" content="another test" >  
Run Code Online (Sandbox Code Playgroud)

而:

<?php $this->headMeta()->setName('keywords', 'test'); ?>
<?php $this->headMeta()->appendName('keywords', 'another test'); ?>
Run Code Online (Sandbox Code Playgroud)

结果是:

<meta name="keywords" content="test" > 
<meta name="keywords" content="another test" > 
Run Code Online (Sandbox Code Playgroud)


Mar*_*cin 11

我建议为关键字设置一个视图变量.例如,在bootstrap.php中,您可以按如下方式定义默认关键字:

protected function _initSetDefaultKeywords() {
     $view = $this->bootstrap('view')->getResource('view');        
     $view->keywords = 'default keywords';
}
Run Code Online (Sandbox Code Playgroud)

layout.phtml中你会有:

<?php echo $this->headMeta()->appendName('keywords', $this->keywords); ?>
Run Code Online (Sandbox Code Playgroud)

最后,在您的视图(或操作)中,您只需更改关键字视图变量即可更改元关键字:

// in an action
$this->view->keywords = 'new kewords';
//or in a view
<?php $this->keywords = 'new kewords'; ?>
Run Code Online (Sandbox Code Playgroud)