Seitentitel dynamisch ändern
Sebastian
- php
Hi,
ich arbeite auf meiner Seite mit Includes für die verschiedenen Seiten, d.h. ich übergebe die jeweiligen Seiten immer über die URL, z.B. "index.php?page=guestbook" usw.
Jetzt würde ich nur noch gerne den Seitentitel, also das, was zwischen den title-Tags im Header steht, dynamisch ändern, je nach dem welche Seite angegeben wurde (z.B. bei "page=guestbook" dann "Gästebuch".
Über die URL möchte ich dies aber nicht wieder lösen, da es dann sehr leicht manipulierbar wäre und auch zu langen URLs führt.
Ich habe mir schon verschiedene Gedanken dazu gemacht, aber bisher konnte ich noch nichts praktisches finden. Eine switch Funktion geht zwar, braucht aber ziemlich viel Quellcode und Arbeit.
Hat vielleicht jemand eine Idee wie man das besser lösen könnte oder hat sich schonmal damit beschäftigt?
Viele Grüße,
Sebastian
Hi,
ich arbeite auf meiner Seite mit Includes für die verschiedenen Seiten, d.h. ich übergebe die jeweiligen Seiten immer über die URL, z.B. "index.php?page=guestbook" usw.
aha. Das bedeutet, Dir liegt eine mit dem Namen "guestbook" verknüpfte Datei vor, die PHP-Code enthalten kann ...
Ich habe mir schon verschiedene Gedanken dazu gemacht, aber bisher konnte ich noch nichts praktisches finden. Eine switch Funktion geht zwar, braucht aber ziemlich viel Quellcode und Arbeit.
... wie z.B. Variablendeklarationen.
Cheatah
Ich glaub du hast das falsch verstanden. Mir ist klar, dass ich in der Datei eine Variable dafür definieren könnte.
Der include der Datei liegt aber nach dem Laden des Headers, somit ist dies dort nicht möglich ;)
Hallo
Ich glaub du hast das falsch verstanden. Mir ist klar, dass ich in der Datei eine Variable dafür definieren könnte.
Der include der Datei liegt aber nach dem Laden des Headers, somit ist dies dort nicht möglich ;)
Dann solltest du bestimmte Aufgaben, wie z.B. das Zuweisen des Seitentitels an eine Variable vor der Ausgabe des HTML-Headers (um den geht es doch?) erledigen. Das Ganze kannst du in einem Array speichern, in dem du nach dem Eintrag für z.B. das Gästebuch suchst.
Das könnte so aussehen:
$seiten["guestbook"]["titel"] = "mein Gästebuch";
Auf diese Art kannst du auch weitere Informationen als Textschnipsel speichern.
Tschö, Auge
Hi,
Ich glaub du hast das falsch verstanden.
nein, keinesfalls.
Der include der Datei liegt aber nach dem Laden des Headers,
Schön, dass Du Deinen Konzeptfehler gefunden hast. Nun musst Du ihn nur noch korrigieren.
Cheatah
Hi,
wo gibst du denn den Meta- Tag
<title>abc</title>
aus? Vor dem include?
Eine switch Funktion geht zwar, braucht aber ziemlich viel Quellcode und Arbeit.
Wieso?
switch( $_GET['page'] )
{
case "guestbook": $titel='Gästebuch von Klaus'; break;
default: $titel='unbekannte Seite';
}
...
echo "<title>".$titel."</title>";
Hat vielleicht jemand eine Idee wie man das besser lösen könnte oder hat sich schonmal damit beschäftigt?
Bei mir wird dem Zentralprogramm (das u.a. bei jedem Aufruf die Berechtigung prüft) das Zielprogramm übergeben. Die HTML- Seite wird im Zielprogramm ausgegeben:
$zielprogramm = $_GET['zielprogramm'];
switch( $zielprogramm ) {
// 000 - SYSTEM
case "tm000": include ( "tm000.php" ); break; // MENU
case "tm001": include ( "tm001.php" ); break; // LOGIN
...
// 100 - PERSONEN
case "tm101": include ( "tm101.php" ); break; // ADRESSPFLEGE
case "tm102": include ( "tm102.php" ); break; // ANWESENHEIT
...
// 200 - RESSOURCEN
case "tm211": include ( "tm211.php" ); break; // SLOTS
case "tm212": include ( "tm212.php" ); break; // EVENTS
...
default: echo "<center><br><br><br>Programm ".$zielprogramm." nicht bekannt.</center>";
}
Kalle
Hallo,
ein möglicher Ansatz wäre es auch den Inhalt der ersten Seitenüberschrift zu verwenden. Also <h1>Überschrift</h1> und alles zwischen <h1></h1> in den Titel schreiben. Sofern das praktikabel erscheint, wäre das doch einfach mit preg_replace() zu machen.
netten Tag
^da Powl
hoi
geht es net so..
{include file="page/header.tpl" pageTitle="Guestbook"}
<title>{$pageName}</title>
Gruss,
Inita
hoi
geht es net so..
{include file="page/header.tpl" pageTitle="Guestbook"}
<title>{$pageName}</title>
<title>{$pageTitle}</title>
sorry
Lieber Sebastian,
kennst Du ob_start()?
Damit lässt Du PHP alles, was per print oder echo eigentlich an den Browser geht, zunächst zwischenspeichern ("puffern"). Damit ist es möglich, "im Nachhinein" HTML-Code nocheinmal zu verändern.
Beispiel:
ob_start(); // das passiert als allererstes, bevor irgendetwas anderes passiert!!!
$html_output = ob_get_contents(); // bereits Ausgegebenes in Variable legen
$html_output = {... mach was mit $html_output und spucke es wieder aus...};
ob_clean(); // Puffer leeren, denn der modifizierte Krams soll ja den alten ersetzen!
echo $html_output; // den modifizierten HTML-Code ausspucken (landet wieder im Puffer)
.... // weitere Script-Aktionen
ob_end_flush(); // beendet die Pufferung und gibt den gesammelten HTML-Output an den Browser aus
Hilft Dir das weiter?
Liebe Grüße aus Ellwangen,
Felix Riesterer.
ob_start() kannte ich noch nicht, habe es nur bei fremden Scripts schonmal gesehen, die ich mir angeguckt habe.
Klingt auf jeden Fall interessant. Da werde ich mich mal näher mit beschäftigen. Danke für den Hinweis.