Seite 1 von 1

recent v.2.2.3 - Anpassung der Anzeige der letzten Posts

Verfasst: 07.08.2005 06:29
von yy
Hallo zusammen!

ich nutze seit kurzem phpBB und finde es super, Lob an dieser Stelle.

Zu meinem Anliegen:
Ich habe folgenden mod installiert: http://www.phpbb.de/moddb/mod.php?id=48 (recent v.2.2.3)

Läuft prima, alles kein Problem, schnell installiert.

Aber...

Mit folgenden Tag´s wird auf der Page, an der entsprechenden Stelle wo man ihn einbaut, der Text des letzten Posts angezeigt (inkl. Link, Autor, etc...):

Code: Alles auswählen

<td class="{recent.ROW_CLASS}" width="25%" nowrap="nowrap"><span class="postbody">{recent.POST_TEXT}</span><br />
<span class="gensmall"> {recent.LAST_URL} {recent.LAST_TIME}&nbsp;&nbsp;{recent.LAST_AUTHOR}</span></td>
Funktioniert auch prima, mein Problem ist allerdings der Tag:

Code: Alles auswählen

{recent.POST_TEXT}
Er funktioniert zwar und zeigt auch den Text des letzten Posters im Forum an, allerdings auch wirklich so wie der letzte Poster ihn geposted hat ;(

Das heisst:

Wenn jemand z.B. folgenden Text postet (inkl. Umbrüche):
Hallo zusammen,
wie geht es euch heute?

Geniales Wetter heute, oder? Na machts mal gut...
Ciao
Euer Blubb
... dann wird er auch genau wie eben im Beispiel gezeigt angezeigt.
Ich habe den mod an einer Stelle eingebaut, wo ich nur für 2 Zeilen á 30 Zeichen Platz habe. Man kann zwar über die config des mod´s einstellen, wieviel Zeichen des letzten Posts man anzeigen lassen möchte:

Code: Alles auswählen

$content = '60';	// length of displayed text
... aber da er den Text so anzeigt wie ihn der Poster geposted hat, würde (bei content=60) auf meiner Page an der entsprechenden Stelle dann folgendes stehen:
Hallo zusammen,
wie geht es euch heute?

Geniales Wetter he....
Es wäre jedoch wünschenswert, da ich nur 2 Textzeilen Platz habe, dass er folgendes anzeigt:
Hallo zusammen, wie geht es
euch heute?Geniales Wetter he....
Kurz gesagt:

Ich bräuchte eine entsprechende Anpassung, in der Richtung, dass Zeilenumbrüche entfernt werden und Smilies aus dem Postertext nicht mit angezeigt werden. Es soll nur der reine Text angezeigt werden, in 2 Reihen á xx Zeichen, ohne Smilies, Umbrüche und Fotos etc.

Absolut leienhaft ausgedrückt, etwas wie:

Code: Alles auswählen

$contentlines = '2';   // number of textlines where text will be displayed
$contentline1 = '30';   // length of displayed text in first textline
$contentline2 = '30';   // length of displayed text in second textline
So wäre es mir dann möglich, an einer relativ engen Stelle im Board, den Text des letzten Posters in 2 Zeilen á 30 Textzeichen ohne Umbrüche, Smilies und Bilder anzeigen zu lassen, die mir sonst das komplette Layout der Seite zerreißen (Tabelle in der der Letzte-Poster-Text angezeigt wird, wird größer als vorgesehen, etc).


Wäre supergenial wenn wir da jemand helfen könnte, da ich nicht wirklich so die Ahnung vom coden habe. Vielleicht kann mir ja sogar Acid helfen, der den mod geproggt hat. Vielleicht ist es ja auch eine Idee für folgende Versionsnummern des mods (wenn geplant).

Ich hoffe mir kann jemand helfen und zeigen wie ich das Problem lösen könnte, und bedanke mich recht herzlich im Voraus!

(Hoffe ich habe mein Problem ausführlich und verständlich rüber gebracht :-? )

Gruß
yy

Verfasst: 07.08.2005 15:28
von Enano
Versuche das mal:
finde in der recent.php

Code: Alles auswählen

	include_once($phpbb_root_path . 'includes/bbcode.'.$phpEx);
	$post_text = preg_replace('/\:[0-9a-z\:]+\]/si', ']', $post_text);
	$post_text = $line[$i]['post_text'];
	$word_censor = ( count($orig_word) ) ? preg_replace($orig_word, $replacement_word, $post_text) : $post_text;
	$post_text = ( strlen($post_text) < $content ) ? $word_censor : substr(stripslashes($word_censor), 0, $content) .'...';
	$post_text = preg_replace('#(<)([\/]?.*?)(>)#is', '', $post_text);
	$pattern = array ('/\[quote:=\'/', '/\'\]/', '/\[quote:\]/', '/\[\/quote:\]/', '/\[code:(.*?)\]/', '/\[\/code:\]/', '/\[(.*?)\]/si');
	$replace = array ('', '<b>', '</b>:: ', '<b>Zitat: </b>', '</br>', '<b>Code: </b>', '</br>', '');
	$post_text = preg_replace($pattern, $replace, $post_text);
	$post_text = ( $include == '1' ) ? $post_text : smilies_pass($post_text);
	$post_text = str_replace("\n", "\n<br />\n", $post_text);
	$post_text = make_clickable($post_text); 
und ersetze mit:

Code: Alles auswählen

//	include_once($phpbb_root_path . 'includes/bbcode.'.$phpEx);
	$post_text = preg_replace('/\:[0-9a-z\:]+\]/si', ']', $post_text);
	$post_text = $line[$i]['post_text'];
	$word_censor = ( count($orig_word) ) ? preg_replace($orig_word, $replacement_word, $post_text) : $post_text;
	$post_text = ( strlen($post_text) < $content ) ? $word_censor : substr(stripslashes($word_censor), 0, $content) .'...';
	$post_text = preg_replace('#(<)([\/]?.*?)(>)#is', '', $post_text);
	$pattern = array ('/\[quote:=\'/', '/\'\]/', '/\[quote:\]/', '/\[\/quote:\]/', '/\[code:(.*?)\]/', '/\[\/code:\]/', '/\[(.*?)\]/si');
	$replace = array ('', '<b>', '</b>:: ', '<b>Zitat: </b>', '</br>', '<b>Code: </b>', '</br>', '');
	$post_text = preg_replace($pattern, $replace, $post_text);
//	$post_text = ( $include == '1' ) ? $post_text : smilies_pass($post_text);
//	$post_text = str_replace("\n", "\n<br />\n", $post_text);
	$post_text = make_clickable($post_text); 
... habe es für eine externe Seite so gemacht und es funzt.

Verfasst: 07.08.2005 17:02
von yy
Hi Enano,

danke für deinen Tipp bzw. Hilfe.

Ich versteh zwar noch nicht ganz was du vor hast, da du ja eigentlich nur 3 Zeilen ausklammerst, aber ich werde es nachher mal probieren (hab jetzt leider keine Zeit) und melde mich aber nachdem ich es getestet habe.

Also vorerst einmal danke und Rückmeldung kommt in Kürze ;)

Verfasst: 13.08.2005 19:08
von yy
So, nochmals danke für deine Hilfe, aber ich habe mich dazu entschieden ein Portal einzusetzen ... und da werden die letzten Posts ja angezeigt. Trotzdem danke für deine Hife!

Verfasst: 16.04.2006 03:52
von webazubi
Enano hat geschrieben:Versuche das mal: ...
und ersetze mit: ...
Das Thema ist zwar schon 1 Jahr alt, aber dennoch: Der Code oben klappt bei mir, nur in meiner Textvorschau wird der BBCode nicht übersetzt.

Bevor ich den Code angeglichen habe, stand in der Textvorschau, sofern die erste Zeile des Beitrages mit BBCode formatiert wurde, der Code an sich, also beispielsweise so etwas wie

Code: Alles auswählen

[color=red][size=24]Hier die eigentliche Textzeile[/size][/color]
.
Die Änderung des Codes wie oben beschrieben hat bei mir nun den Nebeneffekt, dass der BBCode zwar nicht mehr angezeigt wird, dafür aber eine Leerzeile wo sonst der Code stand.

Daher meine Frage: Gibt es einen Trick, wie die BBCode-Übersetzung überprüft oder notfalls per Hand vor dem enstprechendem Aufruf erneut erzwungen werden kann?

Verfasst: 25.04.2006 19:46
von J.C.
Nunja, leider funktioniert bei mir der Modd nicht. Er sagt immer "Fehler in Zeile 222"
o.0 hab es aber so gemacht wie in der Beschreibung.