rails: Holen Sie sich einen Teaser / Auszug für einen Artikel

8

Ich habe eine Seite, die Nachrichtenartikel auflistet. Um die Länge der Seite zu verringern, möchte ich nur einen Teaser anzeigen lassen (die ersten 200 Wörter / 600 Buchstaben des Artikels) und dann einen Link "mehr ..." anzeigen, der den Rest der Seite erweitert, wenn er angeklickt wird Artikel in jQuery / Javascript-Art. Nun, ich habe alles herausgefunden und sogar die folgende Hilfsmethode auf einer Paste-Seite gefunden, die sicherstellt, dass der Nachrichtenartikel (String) nicht mitten in einem Wort zerhackt wird:

%Vor%

Das Problem, das ich habe, ist, dass die Nachrichtenartikel, die ich von der DB bekomme, formatiertes HTML sind. Also, wenn ich Pech habe, wird der oben genannte Helfer meinen Artikelstring genau in der Mitte eines HTML-Tags zerhacken und den "more ..." String dort einfügen (zB zwischen ""), was meinen HTML-Code auf der Seite beschädigt .

Gibt es irgendeinen Weg dazu oder gibt es dort ein Plugin, mit dem ich Auszüge / Teaser aus einer HTML-Zeichenfolge generieren kann?

    
Sebastian 11.02.2009, 12:44
quelle

7 Antworten

2

Vielen Dank für Ihre Antworten! In der Zwischenzeit bin ich jedoch auf das jQuery HTML Truncator Plugin gestoßen, das perfekt zu meinen Zwecken passt und die Trunkierung auf die verschiebt Client-Seite. Es wird nicht einfacher: -)

    
Sebastian 11.02.2009, 14:43
quelle
15

Sie können eine Kombination aus Sanitize und Truncate .

%Vor%

Ich mache eine ähnliche Aufgabe, wo ich Blogposts habe und ich möchte nur einen kurzen Auszug zeigen. Meiner Meinung nach mache ich einfach:

%Vor%

Das streift die HTML-Tags aus, gibt mir die ersten 150 Zeichen und wird in der Ansicht behandelt, so dass es MVC-freundlich ist.

Viel Glück!

    
mwilliams 11.02.2009 14:27
quelle
3

Meine Antwort hier sollte funktionieren. Die ursprüngliche Frage (err, von mir gestellt) lautete, Abschrift abzukürzen, aber ich konvertierte die Abschrift schließlich in HTML und kappte sie dann ab, also sollte es funktionieren.

Natürlich, wenn Ihre Website viel Verkehr bekommt, sollten Sie den Auszug zwischenspeichern (vielleicht, wenn der Beitrag erstellt / aktualisiert wird, könnten Sie den Auszug in der Datenbank speichern?), dies würde auch bedeuten, dass Sie dem Benutzer erlauben könnten, zu ändern oder Geben Sie einen eigenen Auszug ein

Verwendung:

%Vor%

.. und der Code (von der anderen Antwort kopiert):

%Vor%     
dbr 11.02.2009 13:56
quelle
1

Sie müssten komplexere Parser schreiben, wenn Sie nicht in der Mitte von HTML-Elementen aufteilen möchten. es müsste sich erinnern, ob es in der Mitte eines & lt; & gt; blockieren und wenn es zwischen zwei Tags ist.

selbst wenn du das getan hättest, hättest du immer noch Probleme. wenn einige den ganzen Artikel in ein html-Element schreiben, da der Parser es aufgrund des fehlenden schließenden Tags nicht irgendwo aufteilen konnte.

Wenn es überhaupt möglich ist, würde ich versuchen, keine Tags in die Artikel einzufügen oder sie auf Tags zu beschränken, die nichts enthalten (nein <div> und so weiter). Auf diese Weise müssten Sie nur überprüfen, ob Sie sich in der Mitte eines Tags befinden, das ziemlich einfach ist:

%Vor%     
LDomagala 11.02.2009 13:50
quelle
1

Ich hätte den HTML-Code bereinigt und den ersten Satz extrahiert. Angenommen, Sie haben ein Artikelmodell mit einem 'body'-Attribut, das den HTML-Code enthält:

%Vor%

Dies würde konvertieren "& lt; b & gt; Dies ist ein & lt; em & gt; wichtiger & lt; / em & gt; -Artikel! Und hier ist der Rest des Artikels." in "Dies ist ein wichtiger Artikel".

    
August Lilleaas 12.02.2009 10:56
quelle
0

Ich löste das mit folgender Lösung

Install gem 'sanitize'

%Vor%

und verwendet folgenden Code, hier body ist Text mit HTML-Tags.

%Vor%

Gibt einen Auszug mit gültigem HTML. Ich hoffe es hilft jemandem.

    
StarWars 28.09.2013 07:56
quelle
0

Es gibt jetzt ein Schmuckstück namens HTMLTruncator , das sich darum kümmert. Ich habe es verwendet, um Postauszüge und dergleichen anzuzeigen, und es ist sehr robust.

    
boulder 28.03.2014 22:08
quelle

Tags und Links