Teaser nicht bei PHP-Content?
am 15.08.2006 - 20:48 Uhr in
Hallo,
ich benutze Drupal 4.7.2 und in einem Artikel habe ich auch PHP-Code eingebettet. Der funktioniert auch super. Neue Artikel lasse ich auf der Startseite als Teaser anzeigen, außerdem habe ich die Artikel verschiedenen Kategorien zugeordnet, sodass ich Kategorieseiten mit Teasern aus Artikeln der Kategorie bekomme.
Das Ding ist, wenn ich als Eingabeformat HTML eingebe, wird mir ein ordnetlicher Teaser erstellt. Wenn ich PHP als Eingabeformat wähle, wird ist der Teaser identisch wie der Body.
Ich habe in die Datenbank geschaut, daher weiß ich das so genau. Ich muss dann bei einer Änderung am Artikel immer in die Datenbank und schneide den Teaser bei 'break' ab.
Nun die große Frage: Ein Bug oder ein Feature?
Ciao, Q
- Anmelden oder Registrieren um Kommentare zu schreiben
Der Teaser eines Nodes wird
am 15.08.2006 - 21:27 Uhr
Der Teaser eines Nodes wird in der Datenbank-Tabelle node_revisions im Feld teaser gespeichert, sollte also keine Problem darstellen, nur den Teaser aus der DB zu holen.
Vielleicht hilft das weiter.
vg
--
sanduhrs - drupalcenter
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
Ja, ich weiß, dass es ein
am 15.08.2006 - 21:31 Uhr
Ja, ich weiß, dass es ein extra Feld in der DB bei den Nodes gibt. Ich suche gerade die Stelle im Code, die in Abhängigkeit des Eingabeformats den Teaser erstellt. Der Teaser wird ja nur beim Erstellen beschnitten, sonst nicht.
Ich finde mich mit den hook___Funktionen nur nicht zurecht.
Ciao, Q
Ciao, Q
---
Running Gag der IT seit den 70er: "Machen wir eben mal schnell ...".
Oh, sorry, hatte das
am 15.08.2006 - 21:33 Uhr
Oh, sorry, hatte das Eingabeformat überlesen.
Bei Eingabeformat PHP werden keine Teaser erstellt, da dadurch idR nur der Quellcode kaputt geht.
vg
--
sanduhrs - drupalcenter
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
Re: Oh, sorry, hatte das
am 15.08.2006 - 21:37 Uhr
OK, dann möchte ich das bei mir ändern. Immerhin weiß ich, wo ich die Break-Marke setze. Nur muss ich jetzt die verflixte Code-Zeile finden ;-)
Ciao, Q
---
Running Gag der IT seit den 70er: "Machen wir eben mal schnell ...".
Teaser
am 15.08.2006 - 23:34 Uhr
Teaser werden mit der Funktion
function node_teaser($body, $format = NULL)
ab Zeile 151 im node.module erstellt.
Wenn dir das hilft. Ich würd da aber aus verschiedenen Gründen nicht drangehen. Denk mal an Drupal updates.
Ich kann mir auch nicht so recht den Anwendungsfall vorstellen, bei dem man sowas braucht bzw. nicht anders lösen kann.
vg
--
md - drupalcenter
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services
Re: Teaser ab Zeile 151
am 16.08.2006 - 06:26 Uhr
Hallo,
naja, du hast ja Recht, in gewissen Sinne. Aber genau bei dem Node ist es so, dass ich mir mittels PHP nur zusätzliche Informationen hole, die auf der Seite dargestellt werden, ansonsten ist es ein normaler Artikel. Und da ist es schon blöd, wenn der Teaser genauso aussieht wie der Artikel, zumal dann auf der Startseite und den taxonomie/term/x-Seiten dann schon der ganze Artikel steht. Dabei nutze ich diese Seiten zur Übersicht.
Mit den Updates ist das so eine Sache. Ich nutze zum Beispiel den Kalender des Archivs auch für die Zukunft. Ich kam mit dem Modul Event nicht zurecht, daher habe ich einfach nur eine Zeile Code geändert, sodass man im Kalender immer in die Zukunkt blättern kann. Beim Erstellen von Artikeln etc. muss man dann nur ein zukünfitiges Veröffentlichungsdatum eingeben und schon hat man auch sowas wie ein Event-Kalender, nur halt mit dem Archiv-Modul.
Was ich nun mit Update mache, weiß ich auch nicht. Ich habe bisher immer gut dokumentiert, was ich im Code geändert habe und habe immer noch ein Backup der Dateien gemacht, sodass ich in kurzer Zeit alles nachvollziehen kann.
Eine bessere Lösung fällt mir momentan aber nicht ein.
Ciao, Q
Ciao, Q
---
Running Gag der IT seit den 70er: "Machen wir eben mal schnell ...".
PHP-Teaser
am 16.08.2006 - 12:34 Uhr
Du kannst dir doch für diesen Artikel mit PHP sozusagen deinen eigenen Teaser erstellen.
Du generierst ja in diesem Fall den output selber mit PHP. Dann kannst du auch ne Bedingung einbauen
und einmal einen kurzen output generieren.
Hoffe ich ab mich verständlich ausgedrückt.
md - drupalcenter
-----------------
www.mdwp.de
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services
Hallo,
am 24.08.2006 - 23:51 Uhr
Hallo,
ja hast du.
Ich arbeite gerade an einer Lösung, sodass alles zwischen '<?php' und '?>' nicht mit den Teaser kommt. Es wird einfach geskippt. Das sollte als Work-A-Round genügen und man kann damit sehr gut umgehen.
Ciao, Q
---
edit:
Ich habe eigentlich nur eine Zeile geändert. In der Datei node.module sollte man den Code so umändern (ab Zeile: 162@v4.7.2
<?php
// We check for the presence of the PHP evaluator filter in the current
// format. If the body contains PHP code, we do not split it up to prevent
// parse errors.
if (isset($format)) {
$filters = filter_list_format($format);
if (isset($filters['filter/1']) && strpos($body, '<?') !== FALSE) {
$body = preg_replace("/\<\?php(.*)\?\>/isU", "", $body);
}
}
?>
Falls jemand noch einen Link zur Hand hat, wie die Parameter bei RegExp nach Perl sind, bitte schicken, sonst müsst ihr mit meinem "isU" Vorlieb nehmen.
Ciao, Q
Ciao, Q
---
Running Gag der IT seit den 70er: "Machen wir eben mal schnell ...".