16

页面.php:

<?php
include("header.php");
$title = "TITLE";
?>

header.php:

<title><?php echo $title; ?></title>

我希望在包含头文件后设置我的标题。是否有可能做到这一点?

4

9 回答 9

42

扩展 Dainis Abols 的答案,以及您关于输出处理的问题,

考虑以下:

您的 header.php 将标题标签设置为<title>%TITLE%</title>;"%" 很重要,因为几乎没有人输入 %TITLE%,所以您可以稍后将其用于 str_replace()。

然后,您可以像这样使用输出缓冲区

<?php
    ob_start();
    include("header.php");
    $buffer=ob_get_contents();
    ob_end_clean();

    $buffer=str_replace("%TITLE%","NEW TITLE",$buffer);
    echo $buffer;
?>

那应该这样做。

编辑

我相信盖伊的想法效果更好,因为如果你需要它,它会给你一个默认值,即:

  • 标题是现在<title>Backup Title</title>
  • 代码现在是:
<?php
    ob_start();
    include("header.php");
    $buffer=ob_get_contents();
    ob_end_clean();

    $title = "page title";
    $buffer = preg_replace('/(<title>)(.*?)(<\/title>)/i', '$1' . $title . '$3', $buffer);

    echo $buffer;
?>
于 2012-10-22T10:35:14.563 回答
15

1. 只需在 require 函数前添加 $title 变量

<?php

$title = "Your title goes here";
require("header.php");

?>

2.在header.php中加入如下代码

<title><?php echo $title; ?></title>
于 2017-06-01T15:49:32.563 回答
10

您可以做的是,将输出存储在一个变量中,例如:

头文件.php

<?php
   $output = '<html><title>%TITLE%</title><body>';
?>

PS:您需要删除所有回声/打印等,以便所有可能的输出都存储在$output变量中。

这可以通过$output = '';在文件开头定义然后查找/替换 echo$output .=.

然后将其替换%TITLE%为您需要的内容:

<?php
    include("header.php");
    $title = "TITLE";

    $output = str_replace('%TITLE%', $title, $output);
    echo $output;
?>

另一种方法是javascript在您的代码中使用,而不是:

<title><?php echo $title; ?></title>

把这个放在那里:

<script type="text/javascript">
    document.title = "<?=$title;?>"
</script>

或者 jQuery,如果你喜欢:

<script type="text/javascript">
    $(document).ready(function() {
        $(this).attr("title", "<?=$title;?>");
    });
</script>
于 2012-10-22T10:18:09.543 回答
7

稍微扩展一下 we.mamat 的答案,您可以使用preg_replace而不是简单的替换,并完全消除对%title%的需求。像这样的东西:

<?php
ob_start();
include("header.php");
$buffer=ob_get_contents();
ob_end_clean();

$title = "page title";
$buffer = preg_replace('/(<title>)(.*?)(<\/title>)/i', '$1' . $title . '$3', $buffer);

echo $buffer;
?>
于 2015-09-10T18:13:47.957 回答
4

您可以使用 JavaScript 进行设置

<script language="javascript">
    document.title = "The new title goes here.";
</script>
于 2012-10-22T10:18:06.670 回答
3

在页面顶部添加此代码

<?php
    $title="This is the new page title";
?>

在您的模板头文件中添加此代码(包括)

<title><?php echo $title; ?></title>
于 2013-11-11T08:38:46.657 回答
1

这很容易。将此代码放入 header.php

        <? 
$sitename = 'Your Site Name'
$pagetitle;

if(isset($pagetitle)){
 echo "<title>$pagetitle." | ". $sitename</title>";
} 
  else {
echo "<title>$sitename</title>";
}
?>

然后在页面中放置:

 <?
    $pagetitle = 'Sign up'
    include "header.php";
    ?>

因此,如果您在 Index.php 上,标题就是您的站点名称。例如,如果您在注册页面上,标题为 Sign up | 您的站点名称

于 2016-06-24T00:06:22.303 回答
1

每个 Simple 只使用一个函数,我就创建了它。

   <?
function change_meta_tags($title,$description,$keywords){
        // This function made by Jamil Hammash
    $output = ob_get_contents();
    if ( ob_get_length() > 0) { ob_end_clean(); }
    $patterns = array("/<title>(.*?)<\/title>/","<meta name='description' content='(.*)'>","<meta name='keywords' content='(.*)'>");
    $replacements = array("<title>$title</title>","meta name='description' content='$description'","meta name='keywords' content='$keywords'");

    $output = preg_replace($patterns, $replacements,$output);  
    echo $output;
}
?>

首先你必须创建function.php文件并将这个函数放在里面,然后在Header.php中的MetaTags下进行require。使用这个函数 change_meta_tags("NEW TITLE","NEW DESCRIPTION",NEW KEYWORDS); . 不要在 Header.php 中使用这个函数!!只是与另一个页面。

于 2017-05-27T22:07:40.687 回答
0

使用这样的jQuery函数:

$("title").html('your title');

于 2016-10-18T06:26:33.267 回答