Titel bei Include abrufen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Titel bei Include abrufen

    Hallo,

    ich bin ganz neu hier, und habe direkt eine Frage:

    Auf meiner Homepage: www.diyhtml.de includen wir den Inhalt über ?site=home.html z.B....

    Also bleibt das Grundgerüst immer gleich, nur der Inhalt wird über die URL gesteuert Verstanden?

    Jetzt haben wir das Problem, dass ja jede Seite, mit anderem Inhalt auch ihren eigenen Titel haben sollte (für SuMa Optimierung z.B.)..

    Das Grundgerüst sieht so aus:
    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>diyHTML - do it yourself HTML - Webdesign f&uuml;r Einsteiger</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    
    </head>
    
    <body>
    
    ...Navigation....
    
    <div id="inhalt">
    
    <?php 
    $string = $_GET['site'];
    $suchstring = ":/"; 
    if(strstr($string, $suchstring)){ 
    echo (" <h2> Externe Seiten werden nicht eingefügt! <br>  <br>Sicherheits-Shutdown!</h2>");
    $datei = fopen("errorpage.txt","a");
    fwrite($datei, $_GET['site']);
    fclose($datei);
    exit; 
    }
    else {
    
    if(isset($_GET['site']))
    { 
     if(@file_exists($_GET['site'])) {
     	include $_GET['site']; }
    	else { include '404.php'; }
    }
    
    
    elseif (empty($_GET['site'])) 
    {
    include 'home.php'; 
    }
    
    else 
    { 
    include 'home.php'; 
    } 
    }
    
    ?>
    
    </div>
    .... Footer .....
    </body>
    </html>
    Jetzt habe ich versucht, bei <title> einfach das reinzuschreiben:
    Code:
    <title> <? echo '$title'; ?> </title>
    Und dann eben jeweils in die Seite, die includet wird, die Var. title zu definieren.... sodass praktisch die Variable $title aus der includenden Datei als Title eingefügt wird

    Aber es will nicht - es fügt nichts ein

    Liegt es daran, dass die Variable ja erst gebraucht wird, aber erst später definiert wird???

    DANKE,
    Chris
    Zuletzt geändert von Chrissly; 18.04.2006, 15:03.

  • #2
    das liegt daran das du die Datei mit der Variable titel erst NACH der <title> Ausgabe includet hast. Er kann ja nichts ausgeben, was du ihm zu dem Zeitpunkt noch nicht definiert hast..

    Kommentar


    • #3
      das hab ich mir schon fast gedacht

      Und was kann ich dagegen tun? Gibts nen Trick oder einfach ne Lösung?

      Kommentar


      • #4
        Mit php bordmitteln bin aich da überfragt, ab ich denke geht nicht. Du kannst den Fenstertitel allerdings nachträglich mit javascript ändern. Such mal nach document.title z.b. bei SelfHtml. den js-code kannst du ja dann per php generieren.
        [color=blue]...ich sehe was, was du nicht siehst...und das ist der QUELLTEXT![/color]

        Kommentar


        • #5
          oder ne simple php methode.

          steck alle "titles" in eine file mit ner kleinen funktion die dann erkennt welche seite imo angezeigt wird und include diese im kopf der datei.

          Kommentar


          • #6
            Also auf das mit JS wär ich jetzt garnet gekommen - is aber klasse ABER: Ich denk Google führt kein JS aus... also bringts nix

            @ st@tic :

            So werde ich es denk ich machen Danke.... nur können tu ich des net....

            LG,
            Chris

            Kommentar


            • #7
              @ st@tic :

              So werde ich es denk ich machen Danke.... nur können tu ich des net....

              LG,
              Chris [/B]
              mal so ganz spontan dahingeklimpert und nicht getestet (soll auch nur als gedanklicher tritt in den hintern dienen)

              titels.php
              PHP-Code:
              //Startseite
              $Titles['start'] = "Willkommen";
              //Benutzeranmeldung
              $Titles['login'] = "Anmeldung";
              //Impressum
              $Titles['Imp'] = "Impressumg"
              Die Array-Keys müssen dann genauso heißen wie Werte des Get-Elements 'site'

              page.php
              PHP-Code:

              require_once('titles.php');

              //Wenn das Get-Elementleer soll festgelegte überschrift ausgegeben werden
              if(isset($_GET['site']) && $_GET['site'] != "")
              {
              echo 
              '<title>' $Titles[$_GET['site'] . '</title>';
              }
              else
              {
              echo 
              '<title>' $Titles['start'] . '</title>';

              eine sehr bescheidene lösung, aber bin selbst noch ein php-anfänger

              Kommentar


              • #8
                include VOR der <head> Ausgabe eine separate Datei, in der du für jede Variante ($_GET['site']) einen seperaten Titel definierst.

                Kommentar


                • #9
                  Hey Leute, ihr seid genial

                  So ein nettes Forum hab ich schon lange nimmer gesehen - GROßES Lob ^^

                  DANKE, ihr habt mir sehr geholfen

                  LG,
                  Chris

                  Kommentar


                  • #10
                    So ein nettes Forum hab ich schon lange nimmer gesehen - GROßES Lob ^^
                    wie man in den wald schreit....

                    Kommentar


                    • #11
                      @topicstarter
                      Als Alternative könntest du auch das Output Buffering verwenden und dir eine Fkt basteln mittels preg_replace().
                      PHP-Code:
                      $string ob_get_contents();
                      preg_replace('/<title>.*<\\/title>/','<title>'.$neuerTitel.'</title>',$string); 
                      Die Var neuer Titel müsstest du dann an die Fkt übergeben. Diese platzierst du am besten in eine Footer Datei, welche du in jede Seite einbindest.

                      Gruss

                      tobi

                      p.s. Link zum OutputBuffering
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar


                      • #12
                        och ne bitte nicht für eine normale seiten ausgabe schon wieder preg_replace wo man das einfach mit str_replace machen könnte (was viel schneller ist und jeder sofort verseht)
                        PHP-Code:
                        $string str_replace '{title}''<title>' $neuerTitel '</title>'$string ); 
                        und dann einfach da wo der titel stehen soll {title} hinschreiben...
                        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                        Kommentar

                        Lädt...
                        X