CMS Type Teaser mit HTML Text

Ideen für neue Funktionen in CONTENIDO?
Antworten
Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

CMS Type Teaser mit HTML Text

Beitrag von Faar » Do 28. Jul 2016, 15:21

Kann man das hier einstellbar machen, beim CMS_TYPE CMS_TEASER?

Code: Alles auswählen

399:             $text = trim(strip_tags($text)); 
Ich habe schon öfter HTML benötigt statt Text "ohne Punkt und Komma", wenigstens ein <br> wäre schon hilfreich.
Aber eigentlich sollte das einstellbar sein, ob man plain Text will oder HTML.

:(
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: CMS Type Teaser mit HTML Text

Beitrag von Faar » Do 28. Jul 2016, 18:26

Ich habe jetzt den CMS Type CMS_TEASER dupliziert und alles fein umbenannt und als neuen Teaser in der DB und Autoloader eingetragen: https://docs.contenido.org/display/COND ... ntent+Type
Ganz wichtig war dabei auch die zugehörige Script-Datei cmsTeaser.js, die muss auch dupliziert und alles fein säuberlich umbenannt werden und der neue Dateiname dann auch in die neue eigene Klasse eingetragen werden.

striptags funktioniert jetzt bei mir so in Zeile 399:

Code: Alles auswählen

strip_tags($text, '<p><br><a>') 
Damit habe ich Zeilenumbrüche und auch Anker erhalten.

4fb könnte den CMS_TEASER derart erweitern, dass man im Eingabeformular des Editors irgendwo gegebenenfalls die Tags eintragen kann und die würden dann so berücksichtigt.

Code: Alles auswählen

strip_tags($text, $tags) 
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

timo.trautmann_4fb
Beiträge: 472
Registriert: Di 15. Apr 2008, 15:57
Wohnort: Michelstadt
Kontaktdaten:

Re: CMS Type Teaser mit HTML Text

Beitrag von timo.trautmann_4fb » Do 28. Jul 2016, 20:23

Hallo Faar,
vielen Dank für deine Anregungen und Ideen. Bei dieser Art der Lösung kommt leider noch eine Vielzahl von Problemen auf dich zu.
  • Der Teaser kürzt Texte nach X Zeichen nach einem vollständigen Wort
  • Du musst verhindern, dass die HTML Tags als Zeichen gezählt werden da die Texte sonst sehr unterschiedlich werden
  • Du musst verhindern dass das Abschneiden des Textes das HTML zerschießt, in einem Tag, bei <a> Tags musst du sogar darauf achten dass alle öffnenden Tags vor dem Abschneiden des Textes geschlossen werden, sonst zerschießt du dir die Seite
  • Contenido hat hier keine Funktion dafür, auch gibt es nichts natives in PHP
  • Im Prinzip brauchst du einen XML Parser dafür. Es gibt Ansätze dazu im Internet, aber Performant ist etwas anderes
  • Wenn du mit einem XML Parser arbeitest musst du das Thema Codierung mit behandeln
  • Der Redakteur tut sich schon sehr schwer damit Content Typen und IDs auszuwählen, hier müsste er für die Config HTML können. Das wollen wir eigentlich vermeiden
Die Idee an sich ist natürlich gut, aber ein vernünftiger Lösungsweg ist sehr schwierig ... :roll:

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: CMS Type Teaser mit HTML Text

Beitrag von Faar » Fr 29. Jul 2016, 08:31

Guten Morgen Timo,

ich habe in letzter Zeit viele Seiten aufgebaut, die für einfach Redakteure ohne intensive Schulung schlicht nicht mehr rundum bedienbar sind.
Allgemein werden die Seiten immer komplexer im Aufbau.
Meistens läuft es so, dass es jemanden gibt, der sich mit der Materie auskennt oder die komplexeren Sachen der Agentur überlassen bleiben.
Oft sind spezielle Einsätze dieser Art so gestaltet, dass kein Redakteur das Prinzip aufbaut, sondern höchstens an den Inhalten etwas ändert.
Und ihr könnt auch nicht wirklich sagen, dass die Teaser einfach zu verstehen wären :)

Der Hintergrund hier bei mir ist der, dass ein sehr kurzer Text mit Email-Link als HTML übertragen werden muss. Dazu noch ein Teaserbild.
Ohne HTML stünde der ganze Text ohne Punkt und Komma hintereinander aber Kurztext und Email sollen untereinander stehen. Wie machen ohne HTML?
Und die Teaser bieten sich hier praktisch an, weil man ganz leicht und einfach z.B. eine extra Kategorie nehmen kann, woher die Teaser die Information her bekommen und dort kann man ganz einfach eine Info aus und einschalten, indem man einen Artikel on- oder offline schaltet.
Dazu noch eine eigene Vorlage nur für diese Info-Artikel und ein einfacher Redakteur kann damit wunderbar arbeiten.
An der Einrichtung eines solchen Konstruktes soll er ja gar nicht dran, das machen wir Webentwickler.

Es genügt also für die Entwickler ein Hinweis, mittels des kleinen "i" mit Hover-Tipp, dass auch die HTML-Tags mitgezählt werden.
Ich habe das gestern so gemacht, dass ich einfach geschaut habe, wie viele Zeichen in etwa genügen würden und dann ein bisschen mehr.
Sollte jemand mehr rein schreiben, würde es sowieso das Design zerschießen.
Und was soll ich sagen, es funktioniert so wie ich wollte! :mrgreen:

Die Probleme die Du aufgezeichnet hast, sind natürlich eine Hürde, wenn man so ein Programm als "allgemein tauglich" frei geben will, ohne Einschränkungen.
Für meinen Fall, wo die Anzahl der Zeichen und der Einsatz sowieso begrenzt ist, passt meine Lösung sehr gut.

Angenommen, ihr macht das so, dass man selber in einem Input-Feld die Tags eingeben kann ('<p><br><a>'), dann hat man doch nach dem striptags() einen Text, in dem höchstens noch <p></p>, <br> oder <a></a> vor kommt.
Könnte man da nicht etwas schreiben, das alles zwischen < und > nicht als Zeichen mit zählt und z.B. bei <p> erst nach dem </p> kürzt?

Vielleicht ginge da was mit str_word_count($str, 2, '</>')?
Dann habt ihr im Key die Positionen der Wörter, Anzahl der Zeichen-Stellen, die Anzahl Wörter mittels count() und zudem werden die <> als Wörter mit gezählt, wenn sie z.B. so beginnen: <p>Wort ...
Es ist nur eine Idee, weil Probleme macht es bei langen Absätzen, wo das </p> weit am Ende kommt.
Das müsste explizit dann hinten angehängt werden, ebenso beim Anker.
Eine Art "Close-Tags" Funktion, wie bei manchen Editorprogrammen.
Schwierig ist es, aber vielleicht machbar. :?

Es ist halt ungleich schwieriger, ohne HTML einen Zeilenumbruch bei einer Teaserausgabe hinein zu programmieren, wenn man da gar keinen Zugriff hat. Das läuft ja alles innerhalb der Klasse.
Die Anzahl der Zeichen abzuschätzen und im Zweifel etwas mehr zugeben ist leichter. 8)
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Antworten