Vom Teaser alle HTML-Tags ausfiltern bis auf wenige Ausnahmen
Eingetragen von DrupalFan (1646)
am 25.03.2010 - 18:22 Uhr in
am 25.03.2010 - 18:22 Uhr in
Hallo,
wie kann man eigentlich von einem Teaser-Text alle HTML-Tag (img, a href, style, usw,) aufiltern, wobei ein paar Ausnahmen erhalten bleiben sollen: p, br und strong z.Bsp.
Das Ausfiltern geht ja mit PHP, aber wie kann man Ausfiltern und dennoch p, br und strong beibehalten?
Danke.
- Anmelden oder Registrieren um Kommentare zu schreiben
Eingabeformat "filtered html"
am 26.03.2010 - 07:58 Uhr
Hallo,
mir scheint es am einfachsten, das Eingabeformat "filtered html" oder ein eigens dafür eingerichtetes zu verwenden.
Mit Better Formats kannst Du erreichen, dass dieses Format für eine bestimmte Rolle standardmäßig verwendet wird.
Du kannst damit allerdings keine Regel definieren, die nur für ein bestimmtes Feld und für andere Felder nicht gültig ist.
Hilft Dir das weiter?
Es gibt einen Thread dazu...
am 26.03.2010 - 09:19 Uhr
Hallo,
habe eben noch ein wenig dazu gesucht. Es gibt bereits einen Thread zu dem Thema. Ich habe ihn nicht bis zu Ende gelesen, er scheint aber vielversprechend zu sein. Der letzte Patch dazu ist aus März 2010.
Schau doch mal, ob das funktioniert. Es würde mich ebenfalls interessieren...
Funktion gesucht
am 26.03.2010 - 12:16 Uhr
Tja, ich glaube, das ist was anderes.
Hier geht es darum, dass grundsätzlich Full HTML erlaubt sein MUSS, weil ja auch ein Richtext-Editor verwendet wird (TinyMCE) und auch im Node selbst Full HTML erlaubt sein soll, lediglich im Teaser gibt es oft Probleme, weil Drupal wie hier berichtet
http://www.drupalcenter.de/node/26363
manchmal voll falsch abtrennt und dann befindet sich im Teaser vielleicht an beginnendes "a href" ohne Ende, was aber im View-Listing das ganze Listing, das darunter kommt, zerstört.
Daher, und nur daher:
Im Teaser und nur im Teaser will ich alles html ausfiltern außer p, br und strong.
Es gibt ja in PHP eine Funktion dafür, aber die filtert ja alles aus, ich will aber p, br und strong NICHT ausfiltern, alles andere vollständig ausfiltern, und das ganze NUR(!) im Teaser (also programmiert in der node.tpl.php anderer tpl.php) und ausgehend von Full HTML Nodes.
Eigentlich bräuchte man nur eine Funktion dafür, darum und um nicht mehr geht es hier.
Danke.
Niemand kennt strip_tags
am 14.04.2010 - 22:51 Uhr
Eigenartig, dass niemand(!) hier die PHP-Funktion strip_tags kennt, denn wie ich jetzt herausgefunden habe, geht das doch direkt mit strip_tags:
string strip_tags ( string str [, string allowable_tags] )
Man gibt beim 2. Parameter allowable_tags einfach die Tags an, die nicht ausgefiltert werden sollen, z. Bsp.
<strong>
.Kennt denn diesen Befehl wirklich niemand?
Hallo DrupalFan, ich habe
am 15.04.2010 - 06:59 Uhr
Hallo DrupalFan,
ich habe mich mit der PHP Lösung nicht beschäfigt aber einen Lösungsansatz den ich gehen würde.
Erstelle über CCK ein zusätzliches Feld für diesen Teaser und ein weiteres Eingabeformat das speziell diese Dinge dann ausfiltert. Über Views dann zusammenbauen. Keine Super, aber eine Lösung um nur mit den Standardwerkzeugen zu arbeiten.
Ich wollte dir gerade
am 15.04.2010 - 12:45 Uhr
Ich wollte dir gerade strip_tags vorschlagen, weil ich genau sowas (mit geringen Abweichungen) letztens selbst machen musste ^^
Leider war ich zu spät -,-'
Danke, habe es inzwischen
am 15.04.2010 - 16:42 Uhr
Danke, habe es inzwischen schon mit
strip_tags($node->content['body']['#value'], "<strong><p><br>");
Da ich ja sonst meisstens nur
am 10.06.2010 - 09:47 Uhr
Da ich ja sonst meisstens nur Fragen habe, hier nur als Ergänzug für die die später ggf. auch suchen mal was zurück an die Community:
Ich habe es auch gebraucht weil die Teaser so grottig aussahen, habe also aus den Teasern auf Nodes alle HTML Elemente bis auf den <.a.> Tag rausgefiltert, aber da ich auf der Frontseite die Teaser gern mit Infos und Bildern etc. hätte, habe ich das ein wenig abgewandelt:
In die node.tpl.php direkt vor dem Tag wo der Content ausgegeben wird, folgendes einfügen damit ALLE Teaser beschnitten werden:
<?php
if($teaser){
$content=strip_tags($content, '<a>');
}
?>
In die node.tpl.php direkt vor dem Tag wo der Content ausgegeben wird, folgendes einfügen damit NUR die Teaser der NODES, aber nicht die der FRONTSEITE beschnitten werden:
<?php
if($teaser){
if(!$is_front){
$content=strip_tags($content, '<a>');
}
}
?>
Vielleicht sparts ja wem die Suche und Arbeit.