2015-10-19 80 views
1

我试图加入标题元数据标签,这是我的代码:添加在头meta标签锂PHP

应用程序/扩展/帮手/ FacebookHtml.php

<?php 
namespace app\extensions\helper; 

class FacebookHtml extends \lithium\template\Helper { 

protected $_strings = array(
    'title' => '<meta property="og:title" content="{:contenido}" />', 
    'site_name' => '<meta property="og:site_name" content="{:contenido}" />', 
    'url' => '<meta property="og:url" content="{:contenido}" />', 
    'description' => '<meta property="og:description" content="{:contenido}" />', 
    'image' => '<meta property="og:image" content="{:contenido}" />', 
    'image' => '<meta property="og:image" content="{:contenido}" />', 
    'locate' => '<meta property="og:locate" content="{:contenido}" />', 
); 

public function meta($contenido, $options) { 
    return $this->_render(__METHOD__, $options['type'], compact('contenido')); 
} 
} 

在app /视图/布局/ default.html.php,内部

<?=$this->FacebookHtml(); ?>

在其它视图的文件:

<?=$this->FacebookHtml->meta('title', 'Test.. 1...2...3...'); ?>

我在Google和核心代码中查找数小时以了解如何添加元数据。

回答

3

首先几点说明:

在你的例子中,<?=$this->FacebookHtml(); ?>没有做任何事情。

像Oerd在他的answer中说的,你的参数是不正确的。他们应该在FacebookHtml.php匹配你的函数的声明应该是:

<?= $this->FacebookHtml->meta('Test.. 1...2...3...', array('type' => 'title')); ?> 

你的帮手不正是它应该,呈现原始的meta标签。你打电话给你的帮手很重要。就目前而言,您只是将元标记渲染到位。但是,li3 Renderer类提供了$this->head()方法,它有两件事。

  1. 将值传递给head将其添加到使用当前Renderer的所有模板的上下文中。示例:$this->head("<meta property="og:title" content="The Title" />");
  2. 回显$this->head()将呈现当前head上下文中保存的所有标记。

下面是一些真实的例子:

应用程序/视图/布局/ default.html.php

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"/> 

    <?php echo $this->head() ?> 

    <title><?php echo $this->title(); ?> | My Website</title> 

</head> 

<body> 

    <?php echo $this->content(); ?> 

</body> 

</html> 

应用程序/视图/页/ index.html.php

<?php $this->FacebookHtml->meta('Test.. 1...2...3...', array('type' => 'title')); ?> 

上面的例子允许你指定任何标题哟你想在你的意见内。

除了$this->head(),li3还提供了具有类似功能的$this->styles()$this->scripts()

检查从LI3框架资源库的default.html.php样本更完整的示例:https://github.com/UnionOfRAD/framework/blob/master/app/views/layouts/default.html.php

+0

真棒!!!其实真的很简单!谢谢你的时间和知识队友,真的很感激!!你是男人,欢呼!! –

+0

很好的答案...钉了它!:) – Oerd

0

在视图模板,您可以通过选项阵列提供title打电话给助手:

<?= $this->facebookHtml->meta('Test.. 1...2...3...', array('type' => 'title')); ?> 

我敢肯定,你已经通过它走了,但这里是Lithium manual page on helpers

+0

感谢您的回答。但是,在部分中不显示og:标题元数据:( 我想将meta标签放在 –

+0

之内,那么您很可能必须更改'app/views/layouts/default.html.php'在你的视图模板中,即*不*你的视图模板,但在主布局 – Oerd

+0

不要让你,如果你可以通过给我一个例子来帮助我,那真是太棒了,我很久以前就被困住了: ( –