Filter für node teaser
am 06.06.2010 - 17:13 Uhr in
Ich habe ein Modul geschrieben, was einen Filter für Shortcodes in der Form [mytag]whatever[/mytag] zur Verfügung stellt. Soweit funktioniert auch erstmal alles wie gewollt.
Nun möchte ich aber, der der Filter nur auf den Node->body angewendet wird und nicht auf Node->teaser, da Drupal während der Generierung des Teasers an einer Stelle im Text abschneiden könnte, an der Shortcodes stehen und damit die Mustererkennung verhindern würde.
kann nicht genutzt werden.
Beispielt:
Body: "This is the long text with a lot of words and some of my custome tags insert like [mytag]this tag here[/mytag]."
Wenn Drupal nun mitten in [mytag] abschneidet, dann sieht das Resultat wie folgt aus:
Teaser: "This is the long text with a lot of words and some of my custome tags insert like [mytag]this tag "
Dieser beschädigte Shortcode kann vom Fitler nicht mehr erkannt werden und wird wie oben dargestellt.
Ich habe versucht über hook_nodeapi die Shortcodes für den Teaser einfach zu entfernen:
function MYMODULE_nodeapi(&$node, $op, $a3 = null, $a4 = null) {
switch($op) {
case 'presave':
$node->teaser = node_teaser(preg_replace('@\[[\/\!]*?[^\[\]]*?\]@si', '\\2', $node->body));
break;
}
}
Zuerst dachte ich, das Problem wäre damit gelöst. Wenn man die Node dann allerdings editiert, ist der Teaser doppelt vorhanden.
Ideen dazu, die funktionieren, ohne dass man im Core an node_teaser und oder node_save rumbauen muss?
- Anmelden oder Registrieren um Kommentare zu schreiben
Neue Kommentare
vor 13 Sekunden
vor 1 Tag 1 Stunde
vor 1 Tag 3 Stunden
vor 1 Tag 3 Stunden
vor 1 Tag 14 Stunden
vor 1 Tag 16 Stunden
vor 1 Tag 16 Stunden
vor 1 Tag 16 Stunden
vor 1 Tag 20 Stunden
vor 1 Tag 20 Stunden