PHP 缓冲区,用于将 META 描述和 TITLE 传递给站点标头



>我试图改善我的SEO,一种方法是包含一个包含页面内容描述的描述标签,这可以显示在Google搜索结果中。

我遇到的问题是需要在站点标题中,但是我在站点正文中查询我的数据库,我不想要通用的元描述,我希望它根据当前页面动态更新。我的网站是一个相机比较网站,所以例如我需要将品牌名称、型号名称和一些规格传递给元......

我在标签上遇到了同样的问题,因为我希望我的页面标题包含产品名称,我通过使用缓冲区解决了这个问题,允许我将模型名称传递给标题。

标头.php:

<title>%TITLE%</title>

比较.php

ob_start();
include_once 'includes/header.php'; 
$buffer_title=ob_get_contents();
buffer_title=str_replace("%TITLE%", "Specced | " . $brand['brand'] . " " . $model['model'] ,$buffer_title);
echo $buffer_title;
ob_end_clean();

使用此代码,我能够根据页面 ID 查询品牌名称和型号名称,并将详细信息传递给标题......我想我可以用 META 描述标签做同样的事情。

我知道 META 标签不能在网站正文中,所以我的问题是,我希望能够使用我上面显示的对象方法将元详细信息和标题详细信息传递到页面标题。

标头.php:

<title>%TITLE%</title>
<meta name="Description" content="%META%">

比较.php:

ob_start();
include_once 'includes/header.php'; 
$buffer_title=ob_get_contents();
buffer_title=str_replace("%TITLE%", "Specced | " . $brand['brand'] . " " . $model['model'] ,$buffer_title);
echo $buffer_title;
$buffer_meta=ob_get_contents();
buffer_meta=str_replace("%META%", "some dynamic meta description" ,$buffer_meta);
echo $buffer_meta;
ob_end_clean();

我使用此代码遇到的问题是它包含头文件两次,您可以在我的网站上看到它:

http://cameras.specced.co.uk/compare.php?compare_1=129

我很想知道如何使用 ob_start 方法将元和标题详细信息传递到标题。谢谢

这是使用页眉和页脚的 PHP 脚本的常见设计问题。

<header>
<body>
<footer>

从技术上讲,您首先需要收集数据,以便可以输出它。但是对于现有的设计,您首先开始输出(缓冲与否),然后进行处理,然后您意识到您过早开始输出:)

您可以将输出与处理分开,即将正文转换为正文模板,然后预先进行处理。

为此,您需要声明用于标题和描述的模板变量(在每个特定正文模板中使用的变量旁边,但是当标题变量在所有标题模板中固定时,这些变量可能会有所不同更多)。

[processing]
|
|
variables
|
|/
<header>
<body>
<footer>

如果遵循此顺序,则无需编写自己的查找/搜索/替换代码,只需在模板中输出变量即可。这只是执行顺序的问题。

在程序中,输出操作通常排在最后(输入 -> 处理) ->输出;首次公开募股)。

最新更新