2012-10-22 5 views
9

page.php:PHP - Wie ändert man den Titel der Seite AFTER einschließlich Header.php?

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

header.php:

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

ich will meinen Titel AFTER einschließlich der Header-Datei festgelegt werden. Ist es möglich, dies zu tun? Ich habe einige similiar Sachen auf PHP-Fusion tvs gesehen: http://docs.php-fusion.it/temi:output_handling

+9

Der beste Weg, erfordern zu gehen wäre zu Ihrem ändern Programmlogik, so dass Sie den Titel rechtzeitig vor der Ausgabe des Titel-Tags definieren können. Es gibt Workarounds, aber sie sind kludgy. –

+0

In Verbindung stehend: http://stackoverflow.com/questions/2825776/header-how-to-modify-title-of-the-page-on-the-fly – JNF

+2

+1 Pekka. Und für "kludgy" lies "Complicated", "Relativ hohe Verarbeitungskosten" und "Crazy gotcha für den, der das Ding pflegen muss". Repariere deine Architektur, kämpfe nicht dagegen. – Quentin

Antwort

29

auf Dainis Abols Antwort erweitern und Ihre Frage Ausgabe Handling,

ist folgendes zu beachten:

Ihre header.php hat der Titel-Tag zu <title>%TITLE%</title> gesetzt; Die "%" sind wichtig, da kaum jemand% TITLE% tippt, so dass Sie das später für str_replace() verwenden können.

dann können Sie output buffer wie verwenden, so

<?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 Guy's idea besser funktioniert, da es Ihnen eine Standard gibt, wenn Sie es brauchen, IE:

  • Der Titel ist 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; 
?> 
+0

+1 zum Abrufen der Pufferausgabe Version. – Peon

+0

Danke, das habe ich gebraucht! :) –

+0

ist diese Methode seo freundlich ?? –

3

Sie mit Hilfe von JavaScript-Set kann

<script language="javascript"> 
    document.title = "The new title goes here."; 
</script> 
+1

nett, aber es hat 2 Nachteile. man benutzt seo nicht, weil dieser code title tag nicht in header schreibt. Zweitens, wie Meta Description und Keywords hinzufügen? –

8

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

header.php

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

PS: Sie benötigen alle ec entfernen hos/prints usw., so dass alle möglichen Ausgaben in der Variablen $output gespeichert werden.

easely getan werden, indem die Definition $output = ''; am Anfang der Datei und dann Suchen/Ersetzenecho-$output .= Dies kann.

Und dann ersetzen Sie die %TITLE% zu dem, was Sie brauchen:

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

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

Ein anderer Weg javascript in Ihrem Code verwendet, statt:

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

dieses in dort:

<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> 
+0

die erste Variante scheint nicht zu funktionieren. und dann, wenn ich js, Seite Titeländerungen, aber wenn Sie den Quellcode sehen, ist es nicht, was ich brauche –

+0

gut, tatsächlich funktioniert die erste Variante, aber es setzt Seitentitel außerhalb des Header-Bereichs, weil Echo geht nicht hinein header.php page –

+0

Sie müssen ** alle ** Echos in header.php entfernen und '$ output. =' schreiben, wo immer Sie 'echo' haben. Das ist die Idee des Skripts. – Peon

2

diesen Code hinzufügen auf Ihrer Seite

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

diesen Code hinzufügen auf Ihre Template-Header-Datei (enthalten)

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

zkanoca ich möchte nur sagen, diese Lösung ist brilliant! –

+0

Einfach. Perfekt! Vielen Dank! – Brian

5

ein wenig auf we.mamat Antwort Expanding Sie könnte eine preg_replace anstelle der einfachen ersetzen und entfernen Sie die Notwendigkeit für eine % title% insgesamt. Etwas wie dieses:

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

Es ist sehr einfach. Diesen Code in header.php

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

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

dann auf der Seite dort setzen:

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

Also, wenn Sie auf Index.php sind, der Titel Ihre Site Name ist. Und zum Beispiel, wenn Sie auf der Anmeldeseite sind, ist der Titel Anmelden | Ihre Site Name

0

Verwenden Sie eine jQuery Funktion wie folgt aus:

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

1

Jeder Einfach nur eine Funktion, habe ich es.

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

Zunächst einmal müssen Sie function.php-Datei erstellen und diese Funktion nach innen setzen, dann benötigen in Header.php unter den MetaTags machen. Um diese Funktion zu verwenden, change_meta_tags ("NEUER TITEL", "NEUE BESCHREIBUNG", NEUE KEYWORDS); . Verwenden Sie diese Funktion nicht in Header.php !! nur mit anderen Seiten.

+0

Nur stellen Sie sicher, dass Sie die richtige Reihenfolge zuerst Titel, Beschreibung, Schlüsselwörter. andernfalls funktioniert diese Funktion nicht, zweitens verwenden Sie ein einfaches Zitat für Beschreibung und Schlüsselwörter. und ja, sehr praktische Funktion in der Tat –

1

1. Einfach $ titel hinzufügen, bevor Funktion

<?php 

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

?> 

2. Fügen Sie die folgenden Code in header.php

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