wie posting text mit nur post_id auslesen?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
Gumfuzi
Ehemaliges Teammitglied
Beiträge: 2454
Registriert: 26.03.2004 22:25
Wohnort: Linz, AT
Kontaktdaten:

wie posting text mit nur post_id auslesen?

Beitrag von Gumfuzi »

Hallo Leute,

ich habe mir nun die sourcecode docs durchgesehen (http://area51.phpbb.com/docs/code/), aber ich finde keine Funktion, mit der ich anhand einer post_id den dazugehörigen Posting-Text (wenn möglich fertig aufbereitet inkl. BBCodes, Smilies, etc.) bekomme.
Ist euch das was bekannt?

Falls es so eine Funktion nicht gibt, müsste ich den Text zuerst per SQL abfragen (wohl die ganzen Felder von phpbb_posts?) bzw. ein "left_join" einfügen und dann folgende Reihenfolge durchspielen?

Code: Alles auswählen

// Parse the message and subject
$message = censor_text($row['post_text']);

// Second parse bbcode here
if ($row['bbcode_bitfield'])
{
	$bbcode->bbcode_second_pass($message, $row['bbcode_uid'], $row['bbcode_bitfield']);
}

$message = str_replace("\n", '<br />', $message);

// Always process smilies after parsing bbcodes
$message = smiley_text($message);
dann könnte ich $message in das Template übergeben und dort anzeigen lassen?

Liege ich da richtig oder habe ich was übersehen?

Vielen Dank für eure Hilfe/Mühen!

*edit*
habs hinbekommen
korneuburgcc
Mitglied
Beiträge: 6
Registriert: 19.08.2007 19:48

posting ID

Beitrag von korneuburgcc »

und wie?!
Benutzeravatar
Gumfuzi
Ehemaliges Teammitglied
Beiträge: 2454
Registriert: 26.03.2004 22:25
Wohnort: Linz, AT
Kontaktdaten:

Beitrag von Gumfuzi »

habe in der viewtopic.php folgendes hinzugefügt:
(keine Garantie auf ev. Schäden / die nachfolgenden Edits habe ich nur durch Duchsehen der Datei aufgelistet, hoffe, dass ich nix übersehen habe)
find:

Code: Alles auswählen

// Configure style, language, etc.
$user->setup('viewforum', $forum_data['forum_style']);
after, add:

Code: Alles auswählen

if ( $forum_data['forum_style'] == 13 )
{
	$erstes_posting_text = 1;
}
find:

Code: Alles auswählen

// Grab all topic data
$rowset = $announcement_list = $topic_list = $global_announce_list = array();

$sql_array = array(
	'SELECT'	=> 't.*',
	'FROM'		=> array(
		TOPICS_TABLE		=> 't'
	),
	'LEFT_JOIN'	=> array(),
);
after, add:

Code: Alles auswählen

# Zusatz für erstes Posting
if ( $erstes_posting_text == 1)
{
	$sql_array['LEFT_JOIN'][] = array(
		'FROM'	=> array(POSTS_TABLE => 'p'),
		'ON'	=> "t.topic_first_post_id = p.post_id"
	);	
	$sql_array['SELECT'] .= ', p.*';
}
find:

Code: Alles auswählen

// SQL array for obtaining topics/stickies
$sql_array = array(
	'SELECT'		=> $sql_array['SELECT'],
	'FROM'			=> $sql_array['FROM'],
	'LEFT_JOIN'		=> $sql_array['LEFT_JOIN'],

	'WHERE'			=> $sql_where . '
		AND t.topic_type IN (' . POST_NORMAL . ', ' . POST_STICKY . ")
		$sql_approved
		$sql_limit_time",

	'ORDER_BY'		=> 't.topic_type ' . ((!$store_reverse) ? 'DESC' : 'ASC') . ', ' . $sql_sort_order,
);
das " ', ' . $sql_sort_order, " in der letzten Zeile muss auch dazu, dann es dann so aussieht wie hier unter "find"!!

BEFORE, add:

Code: Alles auswählen

if ( $erstes_posting_test == 1)
{
	$sql_sort_order = " t.topic_time DESC";
}
find:

Code: Alles auswählen

		// Generate all the URIs ...
		$view_topic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . (($row['forum_id']) ? $row['forum_id'] : $forum_id) . '&t=' . $topic_id);

		$topic_unapproved = (!$row['topic_approved'] && $auth->acl_get('m_approve', $forum_id)) ? true : false;
		$posts_unapproved = ($row['topic_approved'] && $row['topic_replies'] < $row['topic_replies_real'] && $auth->acl_get('m_approve', $forum_id)) ? true : false;
		$u_mcp_queue = ($topic_unapproved || $posts_unapproved) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue&mode=' . (($topic_unapproved) ? 'approve_details' : 'unapproved_posts') . "&t=$topic_id", true, $user->session_id) : '';
after, add:

Code: Alles auswählen

		#erstes Posting Text
		#-----------------
		if ( $erstes_posting_text == 1)
		{
			include_once($phpbb_root_path . 'includes/bbcode.' . $phpEx);
			$bbcode_bitfield = '';
			$bbcode = new bbcode(base64_encode($row['bbcode_bitfield']));

			// Parse the message and subject
			$post_text = censor_text($row['post_text']);

			// Second parse bbcode here
			if ($row['bbcode_bitfield'])
			{
			   $bbcode->bbcode_second_pass($post_text, $row['bbcode_uid'], $row['bbcode_bitfield']);
			}

			$post_text = str_replace("\n", '<br />', $post_text);

			// maximum Länge
			#$post_text = ( utf8_strlen($post_text) > 100 )? (utf8_substr($post_text,0,100) . '...') : ($post_text);

			// Always process smilies after parsing bbcodes
			$post_text = smiley_text($post_text);

		}
		####
die "maximale Länge funzt zwar, wenn man das "#" wegmacht, aber es bricht auch mitten in URL's etc. um, sodaß dann der Style darunter leidet!

find:

Code: Alles auswählen

			'S_TOPIC_TYPE_SWITCH'	=> ($s_type_switch == $s_type_switch_test) ? -1 : $s_type_switch_test,
after, add:

Code: Alles auswählen

			'FIRST_POST_TEXT'		=> $post_text,
			'FIRST_POST_ID'			=> $row['topic_first_post_id'])
dies sind auch die variablen, die Du in das/die Template einfügen musst.

Viel Erfolg!
Kleopatras_Sister
Mitglied
Beiträge: 257
Registriert: 28.07.2007 18:44

Beitrag von Kleopatras_Sister »

morgen,

entschuldigt wenn ich laie nach frage, aber was genau machen diese Änderungen bzw. ich verstehe nicht was das Thema Insgesamt bewirkt :oops:
Benutzeravatar
Gumfuzi
Ehemaliges Teammitglied
Beiträge: 2454
Registriert: 26.03.2004 22:25
Wohnort: Linz, AT
Kontaktdaten:

Beitrag von Gumfuzi »

die Änderungen habe ich zB. gemacht, damit ich in der Forenansicht bereits den Text der ersten Postings verwenden kann, bei mir für den Blog-Style, man kann es aber ev. auch für die Anzeige des Threadanfangs (erstes posting) beim Mouseover in der Forenansicht nutzen?

Damit das nicht immer abgefragt wird, habe ich diese Bedingungsabfrage gemacht, die jeder selblst definieren kann (bei gewissen Foren ($forum_id), oder gewissen Styles, etc.)
Kleopatras_Sister
Mitglied
Beiträge: 257
Registriert: 28.07.2007 18:44

Beitrag von Kleopatras_Sister »

aso ok, habs zwar noch immer nicht ganz verstanden ist aber nicht das was ich such.

Ich suche nämlich das jedes Post in einem Topc eine id hat, man zu dieser direkt verlinken kann. Dachte nach lesen des Themas, das diese Anpassungen dies bewirken würden. Schade.

Aber hab herzlichen dank für deine Antworten :)
Benutzeravatar
Berliner Schildkroete
Mitglied
Beiträge: 563
Registriert: 30.03.2007 19:02
Wohnort: Berlin

Beitrag von Berliner Schildkroete »

Kleopatras_Sister hat geschrieben:
Ich suche nämlich das jedes Post in einem Topc eine id hat, man zu dieser direkt verlinken kann. Dachte nach lesen des Themas, das diese Anpassungen dies bewirken würden. Schade.
jedes post hat doch seine eigene Id die du so aufrufen kannst:
Dein_Forum/viewtopic.php?f=ID&t=ID&p=ID#pID
ID Forum ID
IDTopic ID
ID Post ID
Es wird dann direkt zum Post gesprungen... z.B. so

oder willst du das das Topic "ohne alles" angezeigt wird, also ohne andere post
Grüße
Berliner Schildkröte
kein Support via PN, etc. - Befolgung meiner Vorschläge auf eigene Gefahr!
Kleopatras_Sister
Mitglied
Beiträge: 257
Registriert: 28.07.2007 18:44

Beitrag von Kleopatras_Sister »

ui

ähm ja, also ich hätte gerne in meinem style Acid das in jedem Post recht unten eine direkte Zahl erscheint, also Post 1 in Toic xy

Hab das mal in einem Forum gesehen und finde das sehr nützlich.

Dazu kommt, was anscheinend auch ne Einstellung ist, wenn ich z.b. sagen wir bei der mitte des Topic bin und die Seite Reloade (F5) dann lande ich statt dort wo ich war, wieder am Anfang des thema... ka ob ich zu sehr abdrifte. Aber vieleicht kannst du mir als Profi da etwas helfen. :) Lieb wäre das (sehr)

;)
Benutzeravatar
Berliner Schildkroete
Mitglied
Beiträge: 563
Registriert: 30.03.2007 19:02
Wohnort: Berlin

Beitrag von Berliner Schildkroete »

Kleopatras_Sister hat geschrieben:ui

ähm ja, also ich hätte gerne in meinem style Acid das in jedem Post recht unten eine direkte Zahl erscheint, also Post 1 in Toic xy

Hab das mal in einem Forum gesehen und finde das sehr nützlich.

Dazu kommt, was anscheinend auch ne Einstellung ist, wenn ich z.b. sagen wir bei der mitte des Topic bin und die Seite Reloade (F5) dann lande ich statt dort wo ich war, wieder am Anfang des thema... ka ob ich zu sehr abdrifte. Aber vieleicht kannst du mir als Profi da etwas helfen. :) Lieb wäre das (sehr)

;)
sowas such ich selber :P
Grüße
Berliner Schildkröte
kein Support via PN, etc. - Befolgung meiner Vorschläge auf eigene Gefahr!
Benutzeravatar
Gumfuzi
Ehemaliges Teammitglied
Beiträge: 2454
Registriert: 26.03.2004 22:25
Wohnort: Linz, AT
Kontaktdaten:

Beitrag von Gumfuzi »

bei jedem Posting in der Threadansicht gibt es die Symbole [ externes Bild ] und [ externes Bild ]
dahinter verbirgt sich ein Link, der gleich auf das jeweilige Posting verlinkt.

Falls Du wirklich eine "fortlaufende" Postingzahl pro Thread brauchst (für eben andere Zwecke als direkt auf ein Post zu verlinken (wie ich eben beschrieben habe), dann müsste man eine Variable mitzählen lassen in der viewtopic.php und diese dann an das Template übergeben (Abschnitt "topicrow"; wo die anderen Variablen übergeben werden.
Antworten

Zurück zu „Coding & Technik“