在 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()
方法,它做了两件事。
- 将值传递给
head
会将其添加到使用当前渲染器的所有模板的上下文中。示例:$this->head("<meta property="og:title" content="The Title" />");
- 回显
$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
我正在尝试在 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()
方法,它做了两件事。
- 将值传递给
head
会将其添加到使用当前渲染器的所有模板的上下文中。示例:$this->head("<meta property="og:title" content="The Title" />");
- 回显
$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