Advertisement
  1. Code
  2. Web Development
Code

Erstellen Sie ein Twitter-ähnliches Widget "Mehr laden"

by
Difficulty:IntermediateLength:LongLanguages:

German (Deutsch) translation by Katharina Nevolina (you can also view the original English article)

Sowohl Twitter als auch der Apple App Store verwenden eine brillante Technik zum Laden weiterer Informationen. Wenn Sie auf den Link klicken, erscheinen neue Elemente auf dem Bildschirm. In diesem Tutorial lernen Sie, wie Sie AJAX, CSS, Javascript, JSON, PHP und HTML verwenden, um diese Magie zu erzeugen. Dieses Tutorial enthält auch die jQuery- und MooTools-Versionen des Skripts.


Annahmen

Es gibt einige Annahmen und Anmerkungen, die wir in dieses System einführen:

  • Der Server muss PHP5 ausführen, damit wir die JSON-Funktionen von PHP5 verwenden können.
  • Wir werden Datenbankeinträge aus einer WordPress-MySQL-Tabelle "posten". Der Vorteil des bereitgestellten Codes besteht darin, dass Sie ihn mit jedem Datenbanksystem verwenden können. Sie müssen lediglich die MySQL-Abfrage und die von jQuery oder MooTools verwendeten JSON-Eigenschaften ändern.
  • Der Client muss Javascript unterstützen.
  • Wir verwenden Moo-Werkzeuge (MooTools) 1.2.3 Core and More 1.2.3.1. Wenn jQuery das bevorzugte Framework ist, jQuery 1.3.2 und das ScrollTo-Plugin von Ariel Flesler.

Dieses Tutorial enthält eine Erläuterung des MooTools-Javascript. Während jQuery
Die Syntax unterscheidet sich von Moo-Werkzeuge, die Schönheit moderner JavaScript-Frameworks ist das
Sie unterscheiden sich hauptsächlich in der Syntax, nicht in der Logik. Das jQuery-Javascript wird unten bereitgestellt.

Die Handlung

Hier ist die Reihenfolge der Ereignisse, die in unserem Slick-Widget stattfinden werden:

  • Die Seite wird normalerweise mit einer anfänglichen Anzahl an Beiträgen geladen
  • Der Benutzer klickt auf das Element "Mehr laden" am unteren Rand der Liste
  • Eine AJAX/JSON-Anfrage wird ausgelöst und eine bestimmte Anzahl neuer Posts abgerufen
  • Unser jQuery/MooTools-Javascript empfängt das Ergebnis und erstellt eine Reihe neuer HTML-Elemente, die die JSON-Informationen enthalten
  • Jedes Element wird in das Containerelement des Widgets verschoben
  • Nachdem alle Elemente in die Seite geladen wurden, blättert das Fenster zum ersten neuen Element
  • Spülen und wiederholen.

Load More Widget

Erster Schritt: Das PHP/MySQL

Der erste Schritt besteht darin zu entscheiden, wie viele Posts während des ersten Seitenladens geladen werden müssen. Da unser Widget sich daran erinnert, wie viele Posts während des letzten Ladens geladen wurden (falls ein Benutzer eine andere Seite besucht und zurückkommt), müssen wir die Sitzung verwenden.

Das obige Code-Snippet enthält alle Inhalte, die wir benötigen. Als Nächstes müssen wir eine PHP-Funktion erstellen, die eine Verbindung zu unserer Datenbank herstellt, weitere Datensätze abruft und deren Inhalt im JSON-Format zurückgibt:

Das obige PHP enthält einen sehr einfachen regulären Ausdruck, der den ersten Absatz des Inhalts meines Beitrags erfasst. Da der erste Absatz der meisten Blogbeiträge als Einführung in den Rest des Inhalts dient, können wir davon ausgehen, dass Absatz eine schöne Vorschau auf den Beitrag darstellt.

Sobald die obige Funktion fertig ist, müssen wir unseren AJAX-Anforderungslistener erstellen. Wir werden wissen, dass jemand eine AJAX-Anfrage gesendet hat, wenn die Variable $_GET['start'] in der Anfrage-URL festgelegt ist.
Wenn eine Anfrage erkannt wird, greifen wir über unsere get_posts()- Funktion weitere 5 Posts auf und geben deren JSON aus. Sobald wir die neuen Beiträge im JSON-Format ausgegeben haben, speichern wir die Anzahl der vom Benutzer angeforderten Elemente und beenden das Skript (sehen Sie unten).

Damit ist der serverseitige Code für unser Widget abgeschlossen. Einfach, nein?

Load More Widget

Schritt 2: Das HTML

Anfangs gibt es nicht viel HTML-Code für dieses Widget. Wir erstellen einen Haupt-Widget-Container. Im Widget-Container befindet sich ein Posts-Wrapper und unser Element "Mehr laden", das als virtueller Server dienen soll, um das Laden weiterer Inhalte auszulösen.

Obwohl wir noch keine einzelnen Post-Elemente einfügen, ist es wichtig, die HTML-Struktur von Post-DIV-Elementen zu kennen, die in den Posts-Wrapper eingefügt werden:

Sample Item

Schritt 3: Das CSS

Zeit, um unserem Widget Flare hinzuzufügen. Sie können die Elemente des Widgets beliebig formatieren. Ich habe mich dazu entschlossen, meine Karikatur auf der linken Seite und den Titel, den Inhalt und den Link auf der rechten Seite hinzuzufügen. Wir müssen CSS für die statischen HTML-Elemente und die von Javascript generierten Elemente hinzufügen (sehen Sie unten).

Eine zusätzliche CSS-Klasse, die wir erstellen, wird als "Aktivieren" bezeichnet. Diese wird bei jedem Start einer AJAX-Anfrage angezeigt und ausgeblendet, wenn die Anfrage abgeschlossen ist.

AJAX Spinner

Schritt 4: Das MooTools-Javascript

Unser MooTools-Javascript macht die Magie möglich. Wir verwenden ein Schließmuster, um den MooTools-Code als bewährte Methode zu enthalten:

Sobald das DOM fertig ist, stellen wir die anfänglichen Javascript-Einstellungen bereit. Beachten Sie, dass eine dieser Einstellungen, initialPosts, die JSON für den ersten Stapel von Posts enthält, der beim Laden der Seite angezeigt werden soll. Wir definieren auch Variablen für die Anzahl der ursprünglich geladenen Beiträge und die Anzahl der Beiträge, die bei jeder AJAX-Anforderung abgerufen werden sollen.

Initial JSON

Sobald unsere Einstellungen festgelegt sind, definieren wir eine Funktion, um den JSON zu verarbeiten, den wir beim Laden der Seite erhalten, sowie über zukünftige AJAX-Anforderungen. Für jeden Beitrag in der JSON wir...

  • eine Post-URL-Variable erstellen, die wir später in der Schleife verwenden werden
  • ein DIV-Element "post" erstellen, das den Beitragstitel, den Inhalt und den Link (im oben gezeigten Format) enthält.
  • das neu erstellte "post" -Element in den Posts-Wrapper einfügen
  • ein Fx.Slide-Objekt für das neue "post" -Element erstellen, damit wir das Element sofort ausblenden können und es dann in die Ansicht schieben können
  • das Fenster nach unten zum ersten neu eingefügten Beitrag scrollen

Hier ist der MooTools-Javascript-Code, der es erledigt.

Scrolls

Jetzt, da unsere postHandler-Funktion definiert ist, ist es Zeit, die anfängliche JSON-Zeichenfolge der Elemente zu behandeln.

Als Nächstes erstellen wir einige weitere Variablen, um den Wert unserer AJAX-Anfrage zu speichern und die Werte des Startwerts der PHP-Sitzung, die Anzahl der zu packenden Posts und das Element "Mehr laden" zu speichern.

Um die Speichernutzung zu reduzieren, erstellen wir unser Request.JSON-Objekt außerhalb des Click-Ereignisses, das in Kürze hinzugefügt wird. Das Request.JSON-Objekt sieht zwar lang aus, ist aber sehr einfach. Brechen sie ab...

Das Anforderungsobjekt erstellen wir mit Grundeinstellungen ...

Fügen Sie einen onRequest-Parameter hinzu, der unsere CSS-Klasse "aktivieren" zum anklickbaren Element "Mehr laden" hinzufügt, und ändern Sie den Text des Elements "Mehr laden" in "Laden..." ....

Fügen Sie einen onSuccess -Parameter hinzu, der den Elementtext "Mehr laden" zurücksetzt, den aktuellen Startpunkt zum Erfassen zukünftiger Elemente verfolgt und die JSON-Antwort genauso behandelt wie wir es mit den ersten Posts getan haben ...

Fügen Sie eine onFailure-Funktion hinzu, um den Text "Mehr laden" bei einem Fehler zu aktualisieren ...

Fügen Sie schließlich eine onComplete-Funktion hinzu, die den Spinner entfernt, sobald die Anforderung abgeschlossen ist, unabhängig von Erfolg oder Misserfolg.

Der letzte Schritt ist das Hinzufügen des Klickereignisses zum Element "Mehr laden". Nach einem Klick stellen wir die AJAX-Anfrage und alle oben genannten Arbeiten werden ausgelöst. Erfolg!

AJAX JSON

Moo-Werkzeuge Vollständiger Code (MooTools Complete Code)

jQuery-Version

Wenn Sie das Javascript-Framework von jQuery bevorzugen, ist dies Ihr Glückstag. Hier ist die jQuery-Version:

Die Moo-Werkzeuge- und jQuery-Versionen weisen dieselbe Logik mit unterschiedlicher Syntax auf!

Mission erfüllt!

Durch die Implementierung dieses Widgets auf Ihrer Website können Sie Ihrer Website mehr Dynamik und Kreativität verleihen. Ich freue mich auf dein Widget! Haben Sie Fragen zur Verbesserung? Posten Sie sie unten!

  • Folgen Sie uns auf Twitter oder abonnieren Sie den NETTUTS-RSS-Feed für mehr tägliche Webentwicklungsberichte und -artikel.


Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.