AJAX - Kompletter Page Refresh
![](http://www.drupalcenter.de/files/noavatar_mini.gif)
am 22.03.2011 - 11:59 Uhr in
Hallo Leute,
ich bin auf der Suche nach der Möglichkeit mittels AJAX (und ev. jQuery) die komplette Seite neu zu laden.
Das ganze soll standardmäßig mit dem Menü von Drupal laufen. D.h. wenn ein Menüpunkt angeklickt wird, wird der anzuzeigende Inhalt nicht in einem komplett neuen Seitenaufbau geladen werden sondern über AJAX.
Bis jetzt habe ich nur Module gefunden, die für Modul-eigene Tabs Content per AJAX laden.
Ich kann mir nicht vorstellen, dass es so eine Möglichkeit/Modul bei Drupal nicht gibt.
lg Roavei
- Anmelden oder Registrieren um Kommentare zu schreiben
Reload
am 22.03.2011 - 12:43 Uhr
Hallo.
Der Sinn, Inhalte per AJAX oder Elemente per AHAH zu laden ist es, weniger Daten durchs Netz zu schieben. Wenn Du nun die komplette Seite, also sämtlichen HTML-Code per AJAX/AHAH lädst, fällt der Grundgedanke des Themas weg.
Wo genau siehst Du den Unterschied zwischen dem normalen Laden der Seite über Link und dem Laden der kompletten Seite per AJAX/AHAH?
Stefan
Hallo Stefan,Meine
am 22.03.2011 - 13:27 Uhr
Hallo Stefan,
Meine Intention, dass ich die Page per AJAX laden will ist, dass ich plane mittels jQuery das ganze etwas zu "modernisieren". Sprich der Content soll z.B. nicht einfach nur angezeigt werden soll z.B. irgendwie langsam eingeblendetwerden. usw. (Das ganze natürlich im akzeptablen Maße, nach dem Motto - weniger ist oft mehr). Vielleicht kann man das was ich machen will bis zu einem gewissen Grad mit einer Flash-Homepage vergleichen.
EDIT: Bei dem Content wird es sich hauptsächlich um kurze Informations-Texte (vielleicht halbe Bildschirm-höhe) handeln. D.h. kein endlos langer Content wo man 2min runterscrollen kann.
lg Roavei
So..habe jetzt genau das
am 24.03.2011 - 14:19 Uhr
So..habe jetzt genau das gefunden was ich haben will: Ist ein Script mit dem Namen FullAjax (die Homepage ist leider nur auf russisch^^: www.fullajax.ru)
Gibt eine Joomla-Komponente wo man super sieht wie ich mir das vorstelle: http://getsite.org.ua/jdemo/#ajx/jdemo/
Tja... d.h. jetzt wohl, dass ich jemanden brauche der mir da ein dazugehöriges Drupal-Modul bastelt :)
Hallo Roavei, was mich bei
am 24.03.2011 - 15:05 Uhr
Hallo Roavei,
was mich bei diesem Ajax-Refresh der gesamte Seite wundert. Es wird ja trotzdem eine neue Unterseite aufgerufen und die URL im Browser ändert sich. Das sieht mit Ajax zwar etwas "moderner" aus, ist aber genau das selbe als wenn man ohne Ajax eine andere/neue Unterseite aufruft.
Ajax soll ja eigentlich "nur" einen bestimmten Bereich der Webseite "neu laden" ohne die gesamte Seite neu laden zu müssen und ohne, dass man eine neue URL aufrufen muss.
Ich hatte vor einiger Zeit das Drupal-Ajax-Modul ausprobiert - aber auch damit wechselte die URL im Browser, den Refresh eines bestimmten Bereichs habe ich damit nicht hinbekommen (wohl aber auch da ich mich mit Ajax nicht wirklich auskenne).
Wenn aber, trotz Ajax, eine neue URL im Browser aufgerufen wird, verstehe ich den Sinn der Ajaxnutzung nicht.
Gruß Matthias
Hallo Matthias, du hast
am 24.03.2011 - 15:36 Uhr
Hallo Matthias,
du hast vollkommen recht, AJAX ist dafür da nur bestimmte Seiteninhalte neu zu laden. Und wenn man es jetzt objektiv (ohne das ganze Webdesignwissen) anschaut dann wird auch hier nur ein Teil der Homepage jeweils neu geladen. Z.B. Der Komplette Header bleibt gleich, der komplette linke und auch der komplette rechte Block wird nicht nochmal geladen. Ebenso natürlich auch der Footer nicht. In Summe kommt somit - je nach Aufbau der Seite - einiges zusammen was nicht neu geladen werden muss. Wenn man jetzt z.B. im Header eine Bilderlaufleiste drin hat wo Bilder durchlaufen, dann werden die ebenfalls nicht neu geladen. usw. usw.
Also abgesehen davon, dass es beim User einen Eindruck von "modernität" hervorruft und sich die Seite von anderen abhebt, sehe ich da schon einige Vorteile (URL hin oder her ;))
lg Roavei
Da aber bei einem
am 24.03.2011 - 17:32 Uhr
Da aber bei einem Seitenaufruf die page.tpl.php-Datei im Theme durchlaufen wird, wird das wohl nicht werden mit belassen der alten Elemente, denn diese Info ist in der page.tpl.php-Datei nicht vorhanden. Also wird alles neu an den Client geschickt. Es wird allerdings der Drupal interne Cache genutzt, um die Information nicht neu rendern zu müssen.
So wie Du Dir den Seitenaufbau vorstellst, arbeitet ein normales Theme in Drupal nicht. Um das zu erreichen, müßtest Du die Seitenaufbereitung und -ausgabe neu schreiben.
Beste Grüße
Werner
Du kannst dir diese Ajax
am 24.03.2011 - 20:25 Uhr
Du kannst dir diese Ajax Funktionalität auch recht einfach selbst basteln - jquery hilft dir dabei ;)
Am Seitenaufbau muss sich erstmal nix ändern - du müsstest nur die Klicks auf die entsprechenden Links abfangen und deren URL mithilfe des jquery Befehls load entsprechend auslesen. In der template.php könntest du dir dann noch ein Extra Template für die page.tpl.php anlegen, welches bei Ajax Calls gezogen ( hierfür kann man den Header X-Requested-With auf XMLHttpRequest prüfen ) wird ( einfach um die Performance zu optimieren ) und schon hättest du deine Ajaxified Seite.
Nun müsstest du dich nur noch um die URL kümmern - hier kannst du aber auf ein history-Plugin von jquery zurückgreifen.
Dies könnte dann wie folgt ausschauen:
http://www.hopper-intermedia.de/referenzen/website-design#%2Freferenz%2F188
SteffenR
@SteffenR: Danke für den
am 29.03.2011 - 09:39 Uhr
@SteffenR: Danke für den Tipp, genau so scheint es am einfachsten und am logischsten zu sein. Was mich jetzt interessiert: wie schalte ich den Header in der page.tpl.php aus? Denn der wird ja seit Drupal 7 nicht mehr im normalen Theme-Template geliefert.
Vielleicht gibt es aber auch noch eine Möglichkeit über Views die Inhalte ohne Header usw. auszuliefern?
Ein weiterer Grund übrigens für AJAX ist, dass man Musik über alle Seiten laufen lassen will, wie z.B. auf http://hypem.com