我希望能够在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" />
我做错了什么?
答案 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指令。