在Lithium PHP的头文件中添加元标记

时间:2015-10-19 17:06:44

标签: php lithium

我正在尝试在标头中添加元数据标签,这是我的代码:

应用程序/扩展器/辅助/ 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 / views / layout / default.html.php中,在

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

在其他视图文件中:

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

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

2 个答案:

答案 0 :(得分:3)

首先注意几点:

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

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

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

你的助手完全按照预期进行操作,渲染原始元标记。你打电话给你的助手很重要。就目前而言,您只是将元标记渲染到位。但是,li3 Renderer类提供了$this->head()方法,它可以完成两件事。

  1. 将值传递给head会将其添加到使用当前渲染器的所有模板的上下文中。示例:$this->head("<meta property="og:title" content="The Title" />");
  2. 回应$this->head()将呈现当前head上下文中保留的所有标记。
  3. 以下是一些现实世界的例子:

    应用/视图/布局/ 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

答案 1 :(得分:0)

在视图模板中,您必须通过在options数组中提供title来调用帮助程序:

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

我确定你已经完成了,但这里是Lithium manual page on helpers