CakePHP:从视图中添加元nofollow标签到布局

时间:2012-01-03 15:05:55

标签: cakephp cakephp-1.3

我希望能够在CakePHP中从视图(或控制器,如果可能)添加元标记

我有一个类似/mycontroller/myview的页面,但是当使用以下过滤器访问它时:

/mycontroller/myview/page:2/max_price:500

然后我想添加meta no follow标签。

HtmlHelper类上有 meta 方法。

当我这样称呼时:

$this->Html->meta('keywords', 'test test test', array('inline'=>false));

它会创建一个这样的元标记:

<meta name="keywords" content="test test test" />

然而,当我这样称呼时:

$this->Html->meta('robots', 'noindex, nofollow', array('inline'=>false));

我自然希望 想要 来创建它:

<meta name="robots" content="noindex, nofollow" />

相反,我得到了这个:

<link href="http://www.example.com/mycontroller/noindex, nofollow" type="application/rss+xml" rel="alternate" title="robots" />

我做错了什么?

3 个答案:

答案 0 :(得分:8)

来自documentation page(最后一行)

  

如果要添加自定义元标记,则应将第一个参数设置为数组。要输出机器人noindex标签,请使用以下代码:

echo $this->Html->meta(array('name' => 'robots', 'content' => 'noindex'));

在你的情况下:

echo $this->Html->meta(array('name' => 'robots', 'content' => 'noindex, nofollow'),null,array('inline'=>false));

希望这有帮助

答案 1 :(得分:3)

这是来自this page的代码的调整版本。我已经对它进行了测试,它确实有效:

<?php
echo $this->Html->meta(
    array('name' => 'robots', 'content' => 'noindex, nofollow'),
    null,
    array('inline'=>false));
?>

显然你可以把它写成一行 - 我只是为了便于查看而将其分解。

答案 2 :(得分:1)

您可以使用$this->set()设置从控制器到视图的相同方式从视图到布局设置变量,我会设置如下设置:

// View
if($condition) {
    $this->set('nofollow', true);
}

// Layout (in <head>)
if(isset($nofollow) && $nofollow) {
    echo $this->Html->meta(array('name' => 'robots', 'content' => 'noindex, nofollow'));

}

现在你有一个简短的1-liner来从任何视图文件添加nofollow指令。