PHP 用于将 META 描述和 TITLE 传递给站点的缓冲区 header

PHP Buffer to pass the META Description and TITLE to the site header

我正在尝试改进我的 SEO,一种方法是添加包含页面内容描述的描述标签,这可以显示在 Google 搜索结果中。

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

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

header.php:

<title>%TITLE%</title>

compare.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 标签不能出现在网站中 body,所以我的问题是,我希望能够将元详细信息和标题详细信息都传递到页面 header使用上面显示的 object 方法。

header.php:

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

compare.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();

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

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

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

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

<header>
<body>
<footer>

从技术上讲,您首先需要收集数据,然后才能输出。但是对于您现有的设计,您首先开始输出(缓冲或不缓冲),然后进行处理,然后您意识到您太早开始输出了:)

您可以将输出与处理分开,即将 body 转换为 body 模板并预先进行处理。

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

[processing]

     |
     |
 variables
     |
    \|/

  <header>
  <body>
  <footer>

如果你按照这个顺序,你不需要自己写find/search/replace代码,你可以直接在你的模板中输出变量。只是执行顺序的问题

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