Website Titel im Nachhinein bearbeiten

metno

Erfahrenes Mitglied
Hallo

Ich habe ein Script, welches im Content-Bereich der index.php included werden soll. Nun soll der Titel der Ausgabe des Scripts entsprechend angepasst werden. Ich habe bereits versucht, das title-Tag nach dem body anzugeben, was theoretisch auch funktioniert, den Suchmaschinen aber einige mühe bereitet. Was für Möglichkeiten bieten sich da noch an bzw. wie wird so was professionell gelöst? Ist Ajax eine gute Möglichkeit?

Ebenfalls habe ich ein Seitenverwaltungsscript geschrieben, das mit einer DB arbeitet. Wenn ich nun beispielsweise den Titel einer Seite ändere und das Formular absende, wird erst die Navigation ausgegeben und erst nachher der neue Titel in die DB geschrieben. So stimmt der Titel in der Navigation nicht mehr mit dem im Content überein. Jedenfalls bis die Seite neu geladen wird. Wie kann ich das elegant umgehen?

Danke euch für eure Mühe

edit: Das Layout ist mit divs aufgebaut. Besteht beim Problem mit der Navi die Möglichkeit, das div mit dem Inhalt vor dem Navi-div auszuführen, jedoch nachher anzuzeigen?
 
Zuletzt bearbeitet:
Hi,

das kannst Du eigentlich alles serverseitig machen, in dem Du die Ausgabe pufferst. So könntest Du z.B. nach dem Include den Output-Buffer auslesen und das <title>-Tag verändern. Schau Dir die Funktionen mal in Ruhe an. Auch Dein Navi-Problem sollte sich damit lösen lassen.

LG
 
Hi,

das kannst Du eigentlich alles serverseitig machen, in dem Du die Ausgabe pufferst. So könntest Du z.B. nach dem Include den Output-Buffer auslesen und das <title>-Tag verändern. Schau Dir die Funktionen mal in Ruhe an. Auch Dein Navi-Problem sollte sich damit lösen lassen.

LG


Boa danke, genau das habe ich gesucht. man wird halt immer klüger ;-)


edit: Jetzt habe ich aber doch noch eine Frage: wie kann ich nun auf bereits interpretierten Code (den Titel) zurückgreifen?
 
Zuletzt bearbeitet:
um mit str_replace die werte ändern zu können mußt du jedoch wissen was sich zwischen <title> und </title> befindet....
Es gibt also verschiedene lösungsmöglichkeiten
1. Via regex die werte vom title einlesen und via str_replace ersetzen
2. Einlesen und ersetzen mit einem regulären ausdruck erledigen
3. Relativ einfach, leicht verständlich, jedoch nen paar zeilen mehr...
PHP:
$result = str_replace("</title>", "<title>", $puffer);
$ergebniss = explode("<title>", $result);
// dadurch würde sich der string in 3 teile trennen head, title, rest
$output = $ergebniss[0]."wunschtitel".$ergebniss[2];
hupps was vergessen..
PHP:
$output = $ergebniss."<title>".$wunschtitel."</title>".$ergebniss[2]; // title hatte gefehlt...
 
Zuletzt bearbeitet:
Sorry, aber ich habe noch immer keine Durchblick und meine Internetrecherchen blieben auch erfolglos. Warum funktioniert folgender Code nicht?

PHP:
ob_start();
echo('<title>Website</title>');
ob_end_flush();
str_replace("<title>Website</title>", "<title>Website - Testseite</title>", ob_get_contents());

Danke für eure Mühe

lg
 
Hallo,
versuch's mal so:
PHP:
<?php ob_start(); ?>
<html>
    <head>
        <title></title>
    </head>
    <body>Dynamischer Titel</body>
</html>
<?php
    echo str_replace('<title></title>', '<title>Mein Titel</title>', ob_get_clean());
?>

mfg
forsterm
 
Hi,

das liegt daran, dass Du mit ob_end_flush das Zeug raushaust und die Pufferung beendest und erst danach Deinen str_replace machst, wobei Du da noch nicht mal das Ergebnis speicherst oder ausgibst (also den Rückgabewert von str_replace).
Lösung s. forsterm

LG
 
Zurück