ezportal news mit html

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Antworten
Benutzeravatar
Susan
Beiträge: 530
Registriert: Mo 03.Jan, 2005 22:55
Wohnort: Hamburg

ezportal news mit html

Beitrag von Susan »

Hi,

ich habe jetzt eine News mit html-Code verfasst. Diese wird aber im Portal nicht angezeigt. Erkennt das Portal keinen HTML-Code? Kann man das irgendwo einstellen?
In der viewtopic wird alles einwandfrei dargestellt (Einstellungen im Adminbereich bzgl. html-Code ist gemacht)

[EDIT] - auch normaler bbcode wird nicht dargestellt ..... :(

[EDIT der letzte] upps, jetzt wird alles dargestellt. Ich mußte in der portal.php nur die Newslänge richtig einstellen ^1 . Sorry für diesen Post :rolleyes:

gruß
Susan
Zuletzt geändert von Susan am So 20.Mär, 2005 10:01, insgesamt 2-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Macht nichts, der enthaltene Hinweis hilft anderen, dieses Fehler auch zu beheben...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Das ist ein "Fehler" in der fetchpost.php!
Sobalt der Text gekürzt wird, werden bbCodes (und anscheinend auch HTML) nicht mehr dargestellt. :(
Ich habe deswegen die Newslänge auf 0 (ungekürzt) stehen.
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Naja, Fehler ist das weniger, sondern nur die Tatsache, wenn der Text abgeschnitten wird, Formatierungen ggf. nicht mehr korrekt erkannt werden.
Ein Nachteil dieser BBCode-Variante (Start- und Endtag), die in den zahlreichen BB's verwendet wird.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
cbrkiter
Beiträge: 170
Registriert: Fr 26.Nov, 2004 01:30
Kontaktdaten:

Beitrag von cbrkiter »

Hier muss ich leider mal anknüpfen. Ich habe nämlich das gleiche Problem, wobei es mir dabei garnicht unbedingt auf Textformatierungen angeht.

Aber: Ich habe ein Forum, in das ich nur NEWS und NEWSLETTER schreibe. Davon möchte ich die letzten 3 immer auf dem Portal anzeigen. Weiterhin habe ich den Mod Local links BBCode 1.2.0 eingebunden, womit ich zu Beginn einer NEWS Thumbnails aus dem Photalbum einbinde. In den NEWSBeiträgen bisher alles wunderschön und kein Problem. Aber wenn ich so eine NEWS nun auf dem Portal anzeige, dann bekomme ich nur den BBCode angezeigt (Beispiel [siteimg=left:3ab4a6e4f1]7[/siteimg:3ab4a6e4f1]) angezeigt. Dort hätte ich aber auch gerne das Foto.

Wenn ich nun die Textlänge mit 0 angebe, dann ist das Bild da. Da das Portal aber zu lang wird, wenn ich immer den vollen Text ausgebe, hatte ich eigentlich vor, die Textlänge auf ca. 400-500 Zeichen zu beschränken.

Da also der BBCode direkt am Anfang steht, kann es nicht das Problem sein, dass mein Schließentag fehlt. Was kann ich machen?
1. 'Man muss das Unm?gliche versuchen, um das M?gliche zu erreichen!' (Hermann Hesse)
2. 'The best way to learn something is to get your hands dirty and do it!' (keine Ahnung))
3. http://www.thw-kamen-bergkamen.de
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Tjoar, hier müsste man prüfen, ob im Text, der abgeschnitten wird, ein BBCode-Anfang ohne Ende existiert. Nicht gerade einfach, sind die Suchmuster für preg_match nun doch recht komplex zu verstehen...
Da muss ich an der Stelle passen.
Wenn das jemand schaffen sollte: Ich brauche das auch :(
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Ich brauche das auch
Ich auch!
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Benutzeravatar
cbrkiter
Beiträge: 170
Registriert: Fr 26.Nov, 2004 01:30
Kontaktdaten:

Beitrag von cbrkiter »

[quote="oxpus - Fr 22.Apr, 2005 21:53";p="29416"]Tjoar, hier müsste man prüfen, ob im Text, der abgeschnitten wird, ein BBCode-Anfang ohne Ende existiert. Nicht gerade einfach, sind die Suchmuster für preg_match nun doch recht komplex zu verstehen...
Da muss ich an der Stelle passen.
Wenn das jemand schaffen sollte: Ich brauche das auch :([/quote]

OK. Den Fehler hab ich gefunden. Es liegt nicht an einem fehlenden Ende des BBCode.

In der fetchposts.php ist die Funktion bbencode_strip(). Die Funktion wird aufgerufen, wenn der Text länger ist, als man als maximal Länge angegeben hat. Diese soll den kompletten BBCode entfernen. Der MOD Local Links BBCode 1.2.0 sah allerdings nicht vor, dass ich auch hier das [siteimg*] ersetze. Also hier die Lösung, damit der BBCode auf dem Portal auch verschwindet.

Code: Alles auswählen

#-----[ OPEN ]------------------------------------------ 
# 
fetchposts.php

# 
#-----[ FIND ]------------------------------------------ 
	// img
	$text = str_replace("[img:$uid]","", $text);
	$text = str_replace("[/img:$uid]", "", $text);

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
	// extended by cbrkiter
	// siteimg
	$text = preg_replace("/\[siteimg=(left|right|center):$uid\].*?\[/si", "[", $text);
	$text = str_replace("[/siteimg:$uid]", "", $text);

# 
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------ 
# 
# EoM
Damit wäre das Problem mit dem Ersetzen gelöst. Es erscheint kein "unschöner" BBCode mehr. Ich hoffe ich konnte Euch damit auch mal helfen. :-)

Allerdings löst das ja eigentlich nur zur Hälfte mein Problem. Ich möchte ja noch immer das Bild am Anfang haben und dennoch einen gekürzten Text anzeigen. :-(
1. 'Man muss das Unm?gliche versuchen, um das M?gliche zu erreichen!' (Hermann Hesse)
2. 'The best way to learn something is to get your hands dirty and do it!' (keine Ahnung))
3. http://www.thw-kamen-bergkamen.de
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

THX cbrkiter. Ich hab das zwar schon lange drin (hab ich beim meinem obigem post nicht dran gedacht :!: ), aber für den ein oder anderen wird es noch nützlich sein wenn es hier erwähnt ist. :)

Das Problem mit den nicht ausgeführten BBCodes in gekürzten News bleibt aber, wie du schon sagst, bestehen und ist verdammt heikel zu Lösen. :(
Wenn man den Text erst durch die Funktion bbencode_second_pass() jagt und danach erst kürzt (also bbencode_strip() umgeht), hat man das Problem das zwar die BBCodes ausgeführt werden, aber evtl. mitten in einem HTML tag gekürzt wird bzw. evtl. noch offene HTML tags nicht geschlossen werden.
Das gleiche Problem besteht wenn man erst kürzt und dann bbencode_second_pass() ausführen lässt. Nur das es dann BBCodes anstelle der HTML tags sind, die geschnitten werden bzw. offen bleiben. :(

Ich hab mir dazu schon oft gedacken gemacht. Die Lösung ist umfangreich und erfordert ein sehr fundiertes Wissen (verständnis) über die 'Regulären Ausdrücke' von preg_match() und konsorten. :heiss:

// EDIT
  • Man müsste die kürzung vornehmen und dabei beachten das die Zeichen der BBCodes, sowie deren UID, nicht mitgezählt werden.
  • Dann müsste geprüft werden ob am ende des gekürzten Textes noch BBCodes offen sind. Wenn ja, dann müssen diese, mit der korekten UID, geschlossen werden.
  • Dann erst dürfen die drei Punkte (die anzeigen sollen das noch weiterer Text vorhanden ist) angehangen und das ganze durch bbencode_second_pass() gejagt werden.
^1
Zuletzt geändert von AmigaLink am Sa 23.Apr, 2005 20:00, insgesamt 1-mal geändert.
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Benutzeravatar
cbrkiter
Beiträge: 170
Registriert: Fr 26.Nov, 2004 01:30
Kontaktdaten:

Beitrag von cbrkiter »

[quote="AmigaLink - Sa 23.Apr, 2005 11:02";p="29434"]
oxpus hat geschrieben:Ich brauche das auch
Ich auch![/quote]

Ich bin mir nicht sicher, ob ich verstanden habe was Ihr braucht oder Ihr verstanden habt, was ich brauche. Mir war es wichtig, dass a) mein BBCode von "siteimg" verschwindet und b) das erstes Foto angezeigt wird. a) habe ich ja bereits oben gelöst. für b) habe ich nun auch eine Lösung gefunden. Für den Fall, dass es also noch jemand brauchen könnte, hier die Änderungen.

Code: Alles auswählen

#-----[ OPEN ]------------------------------------------
#
fetchposts.php

#
#-----[ FIND ]------------------------------------------
  else // strip text for news
  {
    $posts[$i]['post_text'] = bbencode_strip($posts[$i]['post_text'], $posts[$i]['bbcode_uid']);
    $posts[$i]['post_text'] = substr($posts[$i]['post_text'], 0, $text_length) . '...';
    $posts[$i]['striped'] = 1;
  }
#
#-----[ REPLACE, WITH ]------------------------------------------ 
#
  else // strip text for news
  {
    // Original
    // $posts[$i]['post_text'] = bbencode_strip($posts[$i]['post_text'], $posts[$i]['bbcode_uid']);
    // $posts[$i]['post_text'] = substr($posts[$i]['post_text'], 0, $text_length) . '...';

    // edit by cbrkiter - START
    $cbrkuid = $posts[$i]['bbcode_uid'];
    $cbrktext = $posts[$i]['post_text'];
    $posts[$i]['post_text'] = bbencode_strip($posts[$i]['post_text'], $posts[$i]['bbcode_uid']);
    if ( preg_match_all("/\[siteimg=(left|right|center):$cbrkuid\].*?\[\/siteimg:$cbrkuid\]/si", $cbrktext, $cbrkpic))
    {
      $posts[$i]['post_text'] = $cbrkpic[0][0] . substr($posts[$i]['post_text'], 0, $text_length) . '...';
      $posts[$i]['post_text'] = bbencode_second_pass($posts[$i]['post_text'], $posts[$i]['bbcode_uid']);
    }
    else
    {
      $posts[$i]['post_text'] = substr($posts[$i]['post_text'], 0, $text_length) . '...';
    }
    // edit by cbrkiter - END

    $posts[$i]['striped'] = 1;
  }

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
b) funktioniert naürlich nur, wenn a) auch ergänzt wurde ;-)

@oxpus und AmigaLink:
Meintet Ihr, dass Ihr dieses auch bräuchtet oder dachtet Ihr an eine globalere Lösung, um sämtliche Formatierung mitzunehmen?
1. 'Man muss das Unm?gliche versuchen, um das M?gliche zu erreichen!' (Hermann Hesse)
2. 'The best way to learn something is to get your hands dirty and do it!' (keine Ahnung))
3. http://www.thw-kamen-bergkamen.de
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ja, global für alle Formatierungen. Man kann (irgendwie) alle BBCodes auf einmal erfassen. Nur muss es dabei möglich sein, während der Textkürzung diese BBCode-"Paare" zu erkennen und dann erst danach den Text abzuschneiden.
Und genau das ist unser Problem.
Also eben nicht nur für Images oder Siteimages.
Aber vielleicht hilft der Code von Dir, dieses zu verallgemeinern...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
cbrkiter
Beiträge: 170
Registriert: Fr 26.Nov, 2004 01:30
Kontaktdaten:

Beitrag von cbrkiter »

Schade. So eine Antwort hab' ich schon befürchtet. Und ich hab schon gehofft, ich könnt Euch auch mal helfen...

Aber ich denk nochmal drüber nach. ^1
1. 'Man muss das Unm?gliche versuchen, um das M?gliche zu erreichen!' (Hermann Hesse)
2. 'The best way to learn something is to get your hands dirty and do it!' (keine Ahnung))
3. http://www.thw-kamen-bergkamen.de
Antworten