php include eine echte Alternative zu Frames?

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

  • php include eine echte Alternative zu Frames?

    Guten Tag Alle miteinander,

    ja wie ihr seht habe ich eine für euch vielleicht konfuse Frage in den Raum gestellt. Aber wenn Ihr weiter lest, seht Ihr dass es nicht ganz so unberechtigt ist eine solche Frage zu stellen .
    Zum Hintergrund ich designe schon eine längere Zeit Internetpräsentationen. Nun bei meinem neuen Projekt bin ich da auf ein Problem gestoßen, was mich zu meiner Annahme kommen ließ.Was habe ich vor?

    Ich habe eine Seite erstellt schön mit div layern und php include usw. wie es sich gehört, weil Frames macht man ja eigentlich nicht (keine Framediskussion bitte ). Nun zu meinem Problem. Im Header habe ich einen Flashbanner mit Movie und später Loop usw. Wenn ich nun einen Link in der Navigation anklicke also index.php?section= usw. wird eben nicht nur der Content includiert sondern auch dementsprechend der header, so daß der Flashmovie auch von vorne startet. Ansich normal klar aber wenn ich einen fließenden Übergang haben möchte, sieht das sehr unschön aus.
    Ich hoffe ihr könnt mir folgen? Ich kann sicher verhindern das er neu startet, mit Funktionen, sessions, cookies und weiß der Teufel noch aber ich möchte ja das der Flashfilm unabhängig der Links usw. immer durch läuft und es sozusagen keine Unterbrechung gibt. Darum geht es mir hauptsächlich. Bei Frames ist das einfach aber wie man das sonst realisieren kann, weiß ich jetzt wirklich nicht.
    Mit PHP include zumindest schon einmal nicht. Oder doch?
    Ich habe schon eine Menge Foren geschrieben aber bisher konnte mir keiner folge, denke ich zumindest ^^, oder wußte eben eine Alternative. Frames will ich eigentlich nicht.

    Damit Ihr euch etwas darunter vorstellen könnt wie das aussehen soll hier ein Beispiel. Natürlich realisiert mit Frames. Aber die Fragestellung ist ja ob man das auch anders hinkriegt. Mit include bin ich mir ziemlicher sicher geht das nicht:
    http://www.creme21derclub.de

    Na ja vielleicht weiß hier Jemand Rat. Sonst gebe ich es echt auf langsam


    Greet Tribun

  • #2
    wie seiht es mit i-frames aus? oder lädt der da auch die ganze seite neu?

    Kommentar


    • #3
      Wenn mich nicht alles täuscht kannst du bei nem Iframe zwar den Inhalt des Frames nachladen ohne die Seite selbst neuladen zu müssen, aber wenn du die Seite neu lädst dann wird auch der Iframe neu geladen.

      Du müsstest dann den Content der Seite in den Iframe knallen , aber ich denke nicht dass das eine so tolle Lösung wäre , aleine schon weil Google das wohl nicht so mögen wird.

      Wirst in dem Fall wohl nicht um Frames herumkommen.

      Gruß Sono

      Kommentar


      • #4
        Also muss ich, sofern ich das so machen will, wirklich auf Frames zurückgreifen?

        Son Mist.

        Kommentar


        • #5
          Ich fürchte, wenn du willst dass bestimmte Teile der Seite nicht neu geladen werden musst du auf Frames zurückgreifen.

          Du kannst mal ein paar richtig große Seiten abklappern die flashbanner haben die stehen bleiben und schaun ob die Frames haben oder ob die es doch gelöst bekommen haben.

          Viel Glück beim suchen, oder vielleicht weiß doch noch jemand der das Problem auch schon ahtte einen Rat.

          Mir ist aber leider auser den besch.. Frames kein weg bekannt.

          Kommentar


          • #6
            Ich denke mit PHP wird das schwierig bis unmöglich zu realisieren sein, denn es wird ja immer die komplette Seite vom Server geladen d.h. die Animation startet von neuem.
            Was aber gehen dürfte (imho) ist eine JS Lösung. Mittels JS (Stichwort AJAX) kannst du nur die Teile vom Server laden, die sich auf der neuen Seite ändern.
            Ich habe bei auf meiner Seite eine zentrale Header Datei, die mir die Menues kreiert. Die Links der Menus werden zufällig ausgewählt --> bei jedem kompletten Request der Seite ändern sich die Links. In meiner Gallery wollte ich dann aber nur, dass die Bilder geändert werden. Mittels JS habe ich das so gemacht, dass nur Requests nach den Bildern abgesetzt werden --> die Links in den Menues werden NICHT erneuert.

            Also würde ich dir was JS mässiges empfehlen.

            Gruss

            tobi
            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


            • #7
              @topicstarter
              Also ich habe mir mal testweise was ganz primitives zusammengebastelt. Das Prinzip funzt aber
              Code:
              //css
              #links {
               float:left;
               width:150px;
               padding:20px;
               color:red;
               background-color:yellow;
              }
              
              #titel {
               width:100%;
               background-color:green;
               height:100px;
              }
              
              #content {
               background-color:blue;
               height:100%;
              }
              PHP-Code:
              //ist eher html ;-)
              <html>
              <head>
              <title>Frameloses mit JS</title>
              <link href="css/main.css" rel="stylesheet" type="text/css" />
              <script type="text/javascript">
              <!--
              var obj = false;
              function changeContent(adr){
                  /*@cc_on @*/
                  /*@if (@_jscript_version >= 5)
                  // JScript gives us Conditional compilation, we can cope with old IE versions.
                  // and security blocked creation of the objects.
                   try {
                    obj = new ActiveXObject("Msxml2.XMLHTTP");
                   } catch (e) {
                    try {
                     obj = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (E) {
                     obj = false;
                    }
                   }
                  @end @*/
                  
                  if (!obj && typeof XMLHttpRequest!='undefined') {
                      try {
                          obj = new XMLHttpRequest();
                      } catch (e) {
                          obj = false;
                      }
                  }
                  if (!obj && window.createRequest) {
                      try {
                          obj = window.createRequest();
                      } catch (e) {
                          obj = false;
                      }
                  }
                  obj.open("GET",adr,true);
                   obj.onreadystatechange=function() {
                if (obj.readyState==4) {
                 document.getElementById('content').innerHTML = obj.responseText;
                }
               }
               obj.send(null)
              }
              -->
              </script>
              </head>
              <body>
              <div id="titel">
              Mein Header <?php echo time();?>
              </div>
              <div id="links">
              <a href="javascript:changeContent('getSite.php?seite=../index.php)">Testlink</a><br />
              <a href="javascript:changeContent('getSite.php?seite=../news.php')">Testlink</a><br />
              </div>
              <div id="content">
              bladsfkjhsdfjhsadkjfhsadjkfhsdkjfhsdkjfhs
              s
              fds
              f
              sdf
              sd
              fs
              df
              sd
              fs
              df
              sd
              fs
              dfs
              df
              sdf
              s
              </div>
              </body>
              </html>
              PHP-Code:
              //getSite.php
              if(isset($_GET['seite']) && $_GET['seite'] != '' && file_exists($_GET['seite'])){
                  
              $temp file_get_contents($_GET['seite']);
                  
              $temp substr($temp,strpos($temp,'<div id="content">'));
                  return 
              $temp;
              }else{
                 
              header('Location: http://deine_seite.tld/index.php');
                 exit;

              Das ganze ist auf relative URL's beschränkt. Sprich man kann es nicht dazu verwenden Seiten/Files auf einem anderen Server zu öffnen. Auch sollte sichergestellt sein, dass das zu ladende Dokument keine ganze HTML Seite liefert (sonst sind Tags doppelt vorhanden).
              Das Ganze muss dann natürlich noch ausgebaut werden, aber das darfst du selber machen
              Habe es in Opera 8.5 && FF 1.0.7 && IE6 kurz getestet.

              Gruss

              tobi

              EDIT:

              noch eine zentrale php Datei gemacht, die das Laden der gewünschen Seiten übernimmt. ACHTUNG: Die Datei, die das JS enthält und die php Datei MÜSSEN auf dem selben Verzeichnislevel liegen. Dies da nur relative Pfade verwendet werden können.


              Zuletzt geändert von jahlives; 10.02.2006, 15:47.
              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

              Lädt...
              X