wake-up-neo.com

PHP - Wie kann man den Titel der Seite NACHDEM ändern, einschließlich header.php?

page.php:

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

header.php:

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

ich möchte, dass mein Titel nach der Header-Datei gesetzt wird. Kann man das machen? Ich habe einige ähnliche Sachen auf php-fusion tvs gesehen: http://docs.php-fusion.it/temi:output_handling

10
John Stockton

auf Dainis Abols Antwort erweitern, und Ihre Frage zur Ausgabeverarbeitung,

folgendes berücksichtigen:

in der header.php ist das title-Tag auf <title>%TITLE%</title>; gesetzt. Die "%" sind wichtig, da kaum jemand% TITLE% eintippt.

dann können Sie Ausgabepuffer wie folgt verwenden

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

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

und das sollte es tun.

EDIT 

Ich glaube, dass Guy's Idee besser funktioniert, da es einen Standardwert gibt, wenn Sie es brauchen, dh:

  • Der Titel lautet jetzt <title>Backup Title</title>
  • Code ist jetzt:
<?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;
?>
32
we.mamat

Was Sie tun können, ist, Sie speichern die Ausgabe in einer Variablen wie:

header.php

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

PS: Sie müssen all echos/prints etc entfernen, damit alle möglichen Ausgaben in der Variable $output gespeichert werden.

Dies lässt sich leicht erreichen, indem Sie $output = ''; am Anfang der Datei definieren und dann find/replaceecho in $output .= eingeben.

Und ersetzen Sie dann den %TITLE% mit dem, was Sie brauchen:

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

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

Eine andere Möglichkeit ist die Verwendung von javascript in Ihrem Code anstelle von:

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

Fügen Sie das hier ein:

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

Oder jQuery, wenn Sie bevorzugen:

<script type="text/javascript">
    $(document).ready(function() {
        $(this).attr("title", "<?=$title;?>");
    });
</script>
9
Peon

1. Fügen Sie einfach die $ title-Variable hinzu, bevor Sie eine Funktion benötigen

<?php

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

?>

2. Füge folgenden Code in die header.php ein  

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

Um etwas auf die Antwort von we.mamat einzugehen, könnten Sie Anstelle des einfachen Ersetzens einen preg_replace verwenden und die Notwendigkeit eines% title% ganz ausschalten. Etwas wie das:

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

sie können mit JavaScript einstellen

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

Füge diesen Code oben auf deiner Seite hinzu

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

Füge diesen Code in deine Template-Header-Datei ein (include)

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

Es ist sehr einfach, diesen Code in die header.php zu setzen 

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

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

Dann in die Seite dort stellen:

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

Wenn Sie sich auf Index.php befinden, lautet der Titel Ihr Site-Name ... und wenn Sie sich beispielsweise auf der Anmeldeseite befinden, lautet der Titel Registrieren Ihr Site-Name

1
JamilHammash

Jedes Einfach nur mit einer Funktion, ich habe es erstellt.

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

Zuerst müssen Sie die function.php-Datei erstellen, diese Funktion einfügen und dann unter den MetaTags in Header.php . Zur Verwendung dieser Funktion change_meta_tags ("NEW TITLE", "NEW DESCRIPTION", NEW KEYWORDS); Verwenden Sie diese Funktion nicht in Header.php !! nur mit anderen seiten.

1
JamilHammash

Verwenden Sie eine jQuery Funktion wie folgt:

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

0
Mohammadreza