Hallo und guten Morgen,
Deine Funktion riecht ganz stark danach, für jeden der Teaser einen eigenen Funktionsaufruf durchzuführen und damit für jeden Teaser das Dokument erneut zu parsen.
Das geht hier wohl tatsächlich nicht viel anders. Sieht man auch in meinem Lösungsvorschlag in
http://forum.selfhtml.org/self/2015/jun/11/htmlentities-bereinigen/1643075#m1643075
Dort hole ich erst mit der Funktion get_links($node) die Linkliste und schreibe sie in ein Array
$_links[$index]['href']
$_linkls[$index]['linktext']
Da die Anzahl der Links in dem Bereich immer variiert (zwischen vier und sieben habe ich bishe gesehen) und die dazugehörigen Seiten mit den Teasern leider auch öfter mal eine geringfügig andere HTML-Auszeichnung haben, muss man das Grabben hier möglichst flexibel halten.
Anschließend werden mit Hilfe der Linkliste die Einzelseiten nochmal aufgerufen (einen Request könnte man da noch einsparen) und die Überschriften und der Teasertext ausgelesen und ebenfalls in das Array eingetragen.
Wenn man das Array dann zusammengesammelt hat, kann es an die Ausgabe weitergereicht werden
Für die Touch-Display-Version würde ich übrigens einen kleinen Extralink am Teaserlink anbringen, mit dem man die Teaserbox öffnen kann und in dieser dann ein Schließkreuz unterbringen und einen Link auf die Originalseite. Wahrscheinlich würde der auch bei der Desktopversion gar nicht stören. Übrigens hat Jeena P. mit seiner Bildergalerie
http://forum.selfhtml.org/self/2015/jun/15/viele-thumbnails-schneller-laden-und-darstellen/1643106#m1643106
ein ähnliches Problem.
In meinem Demoscript habe ich zusätzlich für Debuggingzwecke noch die XPathes der im betroffenen Container vorhandenen Elemente gesammelt, weil man mit deren Hilfe die temporären Änderungen am Markup am besten erkennen kann. Das kann man für die operative Version natürlich wieder rausschmeißen oder eben einfach nicht benutzen.
Glupto, lade dir das Script doch einfach mal auf deinen Testserver. Es müsste eigentlich sofort funktionieren, wenn der ins Internet darf.
Generell würden mich hier jetzt noch noch drei Dinge interessieren:
- Die Fehlertoleranz für die Grabberlösung erhöhen
- Wann und wie sollte man auf Fehler im laufenden Betrieb reagieren und wie erkennt man die?
- Wie kann man mittels JavaScript in einer gegebenen (fremden) Webseite einen Bereich markieren und das Markup und die Nodes im DOM identifizieren? Das Ergebnis soll dann für das eigene Backend zur Verfügung stehen...
Grüße
TS