web-dev-qa-db-ja.com

PHP-header.phpを含めた後にページのタイトルを変更する方法は?

page.php:

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

header.php:

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

ヘッダーファイルを含めてタイトルを設定したいです。これを行うことは可能ですか?私はphp-fusionテレビで似たようなものを見てきました: http://docs.php-fusion.it/temi:output_handling

11
John Stockton

dainis Abolsの回答、および出力処理に関する質問を拡大し、

以下を考慮してください。

header.phpのタイトルタグは<title>%TITLE%</title>に設定されています。 「%」は重要です。%TITLE%を入力する人はほとんどいないため、後でstr_replace()に使用できます。

次に、 output buffer を使用できます

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

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

そしてそれはそれを行う必要があります。

[〜#〜] edit [〜#〜]

Guyのアイデア は、必要に応じてデフォルトを提供するので、IEの場合:

  • タイトルは現在<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;
?>
33
we.mamat

1。require関数の前に単に$ title変数を追加

<?php

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

?>

2。次のコードをheader.phpに追加します

<title><?php echo $title; ?></title>
11
J Perera

できることは、次のような変数に出力を保存することです。

header.php

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

PS:all echos/printsなどを削除して、すべての可能な出力が$output変数に保存されるようにする必要があります。

これは、ファイルの先頭で$output = '';を定義してから、find/replaceecho$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>
9
Peon

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;
?>
7
Guy

このコードをページの先頭に追加

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

このコードをテンプレートヘッダーファイルに追加(インクルード)

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

javaScriptを使用して設定できます

<script language="javascript">
    document.title = "The new title goes here.";
</script>
3
Nirav Ranpara

それは非常に簡単です。このコードを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を使用している場合、タイトルはあなたのサイト名です。たとえば、サインアップページにいる場合、タイトルは[サインアップ|あなたのサイト名

1
JamilHammash

単純に関数を使用するだけで、私はそれを作成しました。

   <?
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でこの関数を使用しないでください!!別のページだけで。

1
JamilHammash

次のようなjQuery関数を使用します。

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

0
Mohammadreza