Sebastian: Seitentitel dynamisch ändern

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

  1. 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

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. 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 ;)

      1. 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

        --
        Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
        (Victor Hugo)
        Veranstaltungsdatenbank Vdb 0.1
      2. 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

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  2. 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

  3. 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

    --
    ===============================
    powl.hat-gar-keine-homepage.de/
  4. hoi

    geht es net so..

    {include file="page/header.tpl" pageTitle="Guestbook"}

    <title>{$pageName}</title>

    Gruss,
    Inita

    1. hoi

      geht es net so..

      {include file="page/header.tpl" pageTitle="Guestbook"}

      <title>{$pageName}</title>

      <title>{$pageTitle}</title>

      sorry

  5. 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.

    1. 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.