Beiträge / Themen - Archiv auf fremden Seiten

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beiträge / Themen - Archiv auf fremden Seiten

Beitrag von mgutt »

Also ich möchte gerne folgende Funktion anbieten:

Ein Besucher soll die Möglichkeit bekommen ein Javascript einzubinden in dem er die 10 letzten Beiträge z.B. aus dem Newssektor oder einem anderen bestimmten Bereich auf seiner Seite einbinden kann.

Hier bietet sich der recent Mod an.

Jetzt will ich das aber noch so haben, dass die ersten 1000 Zeichen aus dem Beitrag anzeigt werden ohne BBCode, aber mit Zeilenumbruch.

nach 1000 Zeichen kommt dann von mir aus ein "..." oder ein "weiter lesen..."

Ich habe schon angefangen.

Ich werde die Daten auslesen dann puffern und in ein js-script oder in eine html seite schreiben.

Mit der Beitragsauflistung das klappt, aber bei dem BBCode komme ich zur Zeit nicht weiter.

ich lese den Text aus wie folgt:

Code: Alles auswählen

	$sql = "SELECT t.*, f.forum_id, f.forum_name, u.username AS first_poster, u.user_id AS first_poster_id, u2.username AS last_poster, u2.user_id AS last_poster_id, p.post_username AS first_poster_name, p2.post_username AS last_poster_name, p2.post_time, pt.post_text, pt.post_subject, pt.bbcode_uid
		FROM ". $table_prefix ."topics t, ". $table_prefix ."forums f, ". $table_prefix ."users u, ". $table_prefix ."posts p, ". $table_prefix ."posts p2, ". $table_prefix ."users u2, ". $table_prefix ."posts_text pt
		WHERE $where_forums t.topic_poster = u.user_id AND f.forum_id = t.forum_id AND p.post_id = t.topic_first_post_id AND p2.post_id = t.topic_last_post_id AND u2.user_id = p2.poster_id AND pt.post_id = p.post_id AND u.user_id = p.poster_id
		ORDER BY t.topic_last_post_id DESC LIMIT $topic_limit";
weise dann die variablen zu:

Code: Alles auswählen

		$topic_text = $line[$i]['post_text'];
		$bbcode_uid = $line[$i]['bbcode_uid'];
Der Text funktioniert, aber die Funktion hinter dem bbcode verstehe ich nicht, dafür wird nämlich ca. das benötigt: (kann mir hier jemand mal einen tipp geben, ich verstehe nicht ganz diese gleichungen mit "wert ? wert : wert;" auf php.net war die suche bisher erfolglos :cry: )

Code: Alles auswählen

		if ( $bbcode_uid != '' )
		{
			$topic_text = ( 1 = 1 ) ? bbencode_second_pass($topic_text, $bbcode_uid) : preg_replace('/\:[0-9a-z\:]+\]/si', ']', $topic_text);
		}
also zu deutsch, der soll die Funktion "bbencode_second_pass" aus der bbcode.php abarbeiten.

Leider habe ich die nicht, weil ich das Puffern und das speichern auf einer anderen Domain machen möchte.

Aber die Funktion ist mir eh zu umfangreich.

eigentlich brauche ich doch nur ein preg_replace, dass mir die "uid"-werte rauslöscht und die tags entfernt. aber irgendwie bin ich zu blöd dafür einen hinzukriegen ;)
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

ich dachte eigentlich immer, dass wäre eine verkürzte if abfrage durch einen operator. aber hier wird doch komischerweise abgefragt bzw. festgelegt, dass 1 = 1 zugewiesen wird, und damit bbencode_second_pass durchgeführt wird.

also schlecht erklärt:

if 1=1 dann bbencode sonst preg_replace.

Code: Alles auswählen

$topic_text = ( 1 = 1 ) ? bbencode_second_pass($topic_text, $bbcode_uid) : preg_replace('/\:[0-9a-z\:]+\]/si', ']', $topic_text);
ja ich bin noob ;)

mit:

Code: Alles auswählen

$topic_text = preg_replace('/\:[0-9a-z\:]+\]/si', ']', $topic_text);
erreiche ich auf jedenfall, dass die uid's verschwinden. lieber wäre mir aber, wenn die bbcode-tags komplett wegfallen würden.. mal weiter testen. oder kann mir jemand schnell nen heißen tipp geben?
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Benutzeravatar
kratzer54847
Mitglied
Beiträge: 3065
Registriert: 20.01.2003 16:34
Wohnort: Düsseldorf/Hannover/Berlin
Kontaktdaten:

Beitrag von kratzer54847 »

if 1=1
da 1 aber immer gleich 1 ist bringt das doch überhaupt nichts... :roll:
Knowledge Base | MOD Datenbank | Boardsuche | HTML | PHP

Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden ;-)
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

naja das gleiche denke ich ja auch. aber der code ist original aus der viewtopic.php ;)

EDIT:

Ich habe mir jetzt mal was zusammengefummelt, so dass die bbcodes HTML-mäßig umgewandelt werden:

Code: Alles auswählen

		//
		// Parse message and/or sig for BBCode if reqd
		// 

		if ( $bbcode_uid != '' )
		{
		$c = '\:[0-9a-z\:]+\]/i';
		$suche = array ('([\n])',
						'/\[b' . $c,
						'/\[\/b' . $c,
						'/\[i' . $c,
						'/\[\/i' . $c,
						'/\[quote' . $c,
						'/\[\/quote' . $c,
						'/\[code' . $c,
						'/\[\/code' . $c,
						'/\[img' . $c,
						'/\[\/img' . $c,
						'/\[url\]([^>]*?)\[/i',
						'/\[url\=([^>]*?)\]([^>]*?)\[/i',
//						'/http:\/\/([^>]*?)/i',
						'/\/url\]/i',
						'/\[center' . $c,
						'/\[\/center' . $c,
						'/\[color=([a-z]*)' . $c,
						'/\[\/color' . $c,
						'/\[u' . $c,
						'/\[\/u' . $c,
						'/\[size\=([0-9]*)' . $c,
						'/\[\/size' . $c);

		$ersetze = array ('<br />',
						'<strong>',
						'</strong>',
						'<em>',
						'</em>',
						'<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center">
							<tr>
								<td><b>Zitat:</b></td>
							</tr>
							<tr>
								<td>',
						'</td>
							</tr>
						</table>',
						'<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center">
							<tr>
								<td><b>Code:</b></td>
							</tr>
							<tr>
								<td>',
						'</td>
							</tr>
						</table>',
						'<img src="',
						'">',
						'<a href="\\1">\\1',
						'<a href="\\1">\\1',
//						'<a href="http://\\1">http://\\1</a>',
						'</a>',
						'<div align="center">',
						'</div>',
						'<font color="\\1">',
						'</font>',
						'<u>',
						'</u>',
						'<font size="\\1px">',
						'</font>');

			$topic_text = preg_replace($suche, $ersetze, $topic_text);
		}
Damit bin ich erstmal zufrieden. Leider funktioniert das Umwandeln von normalen URLs nicht, da er dann jede URL doppelt umwandeln will.

Jetzt kann ich alle Beiträge aus den Foren auslesen und Puffern. Theoretisch könnte man daraus jetzt ein echtes Archiv bauen, so dass z.B. alte Beiträge wie z.B. bei Motor-Talk nicht mehr neu aufgebaut werden, sondern stupide als HTML dargestellt werden. (z.B. bei Beiträgen auf die seit ca. 100 Tagen keine Antwort mehr gestellt wurde)

Das spart ja bekannterweise MySQL Verbindungen und bringt damit wiederrum Performance ;)

Aber ich will eher "Spammen" und meine Beiträge auf andere Seiten bringen ;)
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
MW_Skripts
Mitglied
Beiträge: 65
Registriert: 29.05.2006 22:27
Kontaktdaten:

Beitrag von MW_Skripts »

Ist der MOD jetzt schon fertig?

Habe ich das richtig Verstandn, der MOD schreibt die letzt Beiträge von 10 Tagen auf eine exteren HTML datei.
Meine Signatur war zu groß und wurde deshalb gelöscht - Siehe phpBB.de-Knigge
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“