CakePHP Canonical Tag with html helper

时间:2011-03-15 09:54:00

标签: cakephp canonical-link

如何使用html帮助器创建它? (使用inline = false,因此我可以基于每个视图指定它)

<link rel="canonical" href="http://www.example.com/product.php?item=swedish-fish" />

除了不起作用的补丁外,似乎无法找到任何内容。

5 个答案:

答案 0 :(得分:9)

在CakePHP错误跟踪网站http://cakephp.lighthouseapp.com/projects/42648/tickets/1063-support-for-custom-meta-tag-elements-in-htmlhelper

中找到了这个

显然你可以使用

echo $this->Html->meta('canonical', 'http:://example.com', array('rel'=>'canonical', 'type'=>null, 'title'=>null));
//outputs <link href="http:://example.com" rel="canonical" />

答案 1 :(得分:8)

好像我的朋友告诉我,几个月前我告诉他如何做到这一点,问题解决了......

<?php echo $this->Html->meta('canonical', 
    'http://www.example.com/product.php?item=swedish-fish', 
    array('rel'=>'canonical', 'type'=>null, 'title'=>null, 'inline' => false)
);?>

答案 2 :(得分:3)

如果您正在寻找能够自动将当前网址输出到规范标记的内容,您可以使用Cakephp html帮助程序中的$this->Html->url(null, true);$this->here;

<?php echo $this->Html->meta('canonical', $this->Html->url(null, true), array('rel'=>'canonical', 'type'=>null, 'title'=>null)); ?>

或者

<?php echo $this->Html->meta('canonical', $this->here, array('rel'=>'canonical', 'type'=>null, 'title'=>null)); ?>

<强> 警告: 我听说过$this->here在本地开发环境中存在问题的一些情况。

答案 3 :(得分:1)

在CakePHP 2中:

echo $this->Html->meta('canonical', 'http://example.com', array('rel' => 'canonical', 'type' => null, 'title' => null, 'inline' => false));

在CakePHP 3中:

echo $this->Html->meta('canonical', 'http://example.com', array('rel' => 'canonical', 'type' => null, 'title' => null, 'block' => true));

请注意,版本之间的主要区别在于CakePHP 2使用'inline' => false而CakePHP 3使用'block' => true将这些内容放在文档<head>标记中。

答案 4 :(得分:0)

CakePHP 4 中:

在您的视图(es:Articles/view.php)中添加:

<?php $this->Html->meta(
  'canonical',
  Router::url(['controller' => 'Articles', 'action' => 'view', $article->slug], true),
  [
    'block' => true
  ]
);
?>

然后使用此说明将其打印在 layout/default.ctp 中

<?= $this->fetch('meta') ?>