在 Lithium PHP 中的 header 中添加元标记

Adding meta tags in header in Lithium PHP

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

app/extensions/helper/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 和核心代码中寻找了几个小时,以了解如何添加元数据。

在您的视图模板中,您必须通过在选项数组中提供 title 来调用助手:

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

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

先做几点说明:

在您的示例中,<?=$this->FacebookHtml(); ?> 不执行任何操作。

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

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

您的助手完全按照预期的方式呈现原始元标记。在哪里打电话给你的助手很重要。就目前而言,您只是将元标记渲染到位。然而,li3 Renderer class 提供了 $this->head() 方法,它做了两件事。

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

这里有一些现实世界的例子:

app/views/layouts/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>

app/views/pages/index.html.php

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

上面的示例允许您在视图中指定任何 headers。

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

检查默认值。html.php 来自 li3 框架存储库的示例以获得更完整的示例:https://github.com/UnionOfRAD/framework/blob/master/app/views/layouts/default.html.php