Url "letzter Beitrag"

Du suchst einen bestimmten Mod, weißt aber nicht genau wo bzw. ob er überhaupt existiert? Wenn dir dieser Artikel nicht weiterhilft, kannst du hier den von dir gewünschten/gesuchten Mod beschreiben ...
Falls ein Mod-Autor eine der Anfragen hier aufnimmt um einen neuen Mod zu entwicklen, geht's in phpBB 2.0: Mods in Entwicklung weiter.
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.
Be123
Mitglied
Beiträge: 32
Registriert: 03.10.2004 21:27
Wohnort: Hamburg
Kontaktdaten:

Url "letzter Beitrag"

Beitrag von Be123 »

moin moin!
Hat jemand eine Idee, wie man die Url des letzten Beitrags dahingehend ändern kann, dass nicht eine eigene Seite geschaffen wird, um den letzten Beitrag aufzurufen, sondern man auf die topic-Seite kommt und dann runter zum letzten Beitrag? Nix verstanden? Macht nichts, hier ein Beispiel:

http://www.schoolwork.de/forum/viewtopic.php?p=63#63
http://www.schoolwork.de/forum/viewtopic.php?t=34#63

Die erste Url möchte ich so ändern, dass die zweite entsteht. (In der Spalte "letzter Beitrag".)
Der Sinn an der Sache ist, dass Google die Forum-Seiten dann nicht doppelt findet.

Weiß jemand Rat?
Be123
Mitglied
Beiträge: 32
Registriert: 03.10.2004 21:27
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Be123 »

Ich habe mir überlegt, dass die Nummer für den letzten Beitrag (p=) jeweils pro Forum in die Datenbank geschrieben wird. Genau das Gleiche müsste mit den Topics (t=) geschehen, damit man dann die Nummer für das letzte Thema pro Forum abrufen kann. Ist das irgendwie zu bewerkstelligen?
Be123
Mitglied
Beiträge: 32
Registriert: 03.10.2004 21:27
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Be123 »

Zusätzlich zu dem Feld "forum_last_post_id" in der Tabelle phpbb_forums möchte ich ein Feld einbauen, das "forum_last_topic_id" heißen soll und die Nummer des letzten Themas enthält. Dann müsste ich dafür sorgen, dass
1) die last_topic_id bei jedem Post in die Datenbank eingetragen wird
2) die last_topic_id beim Anzeigen der einzelnen Foren-Übersichten abgerufen wird.

Eine Alternative wäre, dass ich anhand der last_post_id die zu der post_id passende topic_id herausbekomme.
1) Mit der last_post_id in die Tabelle phpbb_posts gehen und das dazugehörige Feld topic_id finden.

Bei beiden Möglichkeiten habe ich die Frage: Wie kann ich das erreichen? :cookie:
Be123
Mitglied
Beiträge: 32
Registriert: 03.10.2004 21:27
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Be123 »

Ich glaube, es wäre ganz sinnvoll, wenn in der nächsten Version von phpbb die letzten Beiträge-Urls nach dem oben beschriebenen Schema aufgebaut wären, weil Suchmaschinen dann die Beiträge nicht mehr doppelt finden würden.

*Hier* hat man sich zu dem Problem auch Gedanken gemacht.
Be123
Mitglied
Beiträge: 32
Registriert: 03.10.2004 21:27
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Be123 »

...keine Angst, ich führe gerne Selbstgepräche ...:evil:

Wie kann ich jetzt mit einer Datenbankabfrage meinen forum_last_topic_id Wert erhalten?

Die dritte folgende Möglichkeit verwerfe ich sogleich wieder, weil alte Foren dann nicht aufgerüstet werden könnten: Beim Posten gleich topic_id#post_id zusammen in das Feld forum_last_topic_id eintragen.

Meine Wahl fällt also zunächst auf die zweite Möglichkeit, weil dann kein neues Feld in der Datenbank angelegt werden muss.

Aus der Tabelle phpbb_forums erhalte ich die zu forum_id passende forum_last_post_id. Mit diesem Wert gehe ich in die Tabelle phpbb_posts und suche die zu post_id passende topic_id.
Fertig! ...jetzt das ganze nochmal in mysql. :-? Kennt sich jemand damit aus?
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Beitrag von itst »

phpBB liest auf dem Index die forum_last_post_id des aktuellen Forums aus. Die nimmst Du und packst sie hier (index.php, if-Schleife ab Zeile 395) rein:

Code: Alles auswählen

$sql = "SELECT topic_id FROM phpbb_topics WHERE topic_last_post_id = " . $forum_data[$j]['forum_last_post_id'];
Damit bekommst Du die topic_id dieses Posts.
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o
Be123
Mitglied
Beiträge: 32
Registriert: 03.10.2004 21:27
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Be123 »

hi,

danke für die Antwort!
Folgendes müsste ja eigentlich auch funktionieren:

Code: Alles auswählen

$sql = "SELECT topic_id FROM phpbb_posts WHERE post_id =".$forum_data[$j]['forum_last_post_id'];
Nur leider funktioniert beides nicht. Wenn ich das Ergebnis einfach mal mit echo zum Vorschein rufe, sieht es so aus, als wenn er den ersten Teil der Datenbankabfrage überhaupt nicht ausführen würde.
SELECT topic_id FROM phpbb_posts WHERE post_id =2323SELECT topic_id FROM phpbb_posts WHERE post_id =2331SELECT topic_id FROM phpbb_posts WHERE post_id =2328 usw.
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Beitrag von itst »

Poste mal Deine Code.
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o
Be123
Mitglied
Beiträge: 32
Registriert: 03.10.2004 21:27
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Be123 »

Code: Alles auswählen

							if ( $forum_data[$j]['forum_last_post_id'] )
							{
								$sql = "SELECT topic_id FROM phpbb_posts WHERE post_id =".$forum_data[$j]['forum_last_post_id'];
								echo $topic_id;

								$last_post_time = create_date($board_config['default_dateformat'], $forum_data[$j]['post_time'], $board_config['board_timezone']);

								$last_post = $last_post_time . '<br />';

								$last_post .= ( $forum_data[$j]['user_id'] == ANONYMOUS ) ? ( ($forum_data[$j]['post_username'] != '' ) ? $forum_data[$j]['post_username'] . ' ' : $lang['Guest'] . ' ' ) : '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . '='  . $forum_data[$j]['user_id']) . '">' . $forum_data[$j]['username'] . '</a> ';

								$last_post .= '<a href="' . append_sid("viewtopic.$phpEx?"  . POST_POST_URL . '=' . $forum_data[$j]['forum_last_post_id']) . '#' . $forum_data[$j]['forum_last_post_id'] . '"><img src="' . $images['icon_latest_reply'] . '" border="0" alt="' . $lang['View_latest_post'] . '" title="' . $lang['View_latest_post'] . '" /></a>';
							}
echo $topic_id; habe ich als Test reingeschoben. Allerdings bekomme ich dann 27 Siebenen, also 777777777777777777777777777. Eines der letzten Themen hat die id 777 und ich habe neun Foren; 3*9=27. ...Ein kleiner Erfolg?
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Beitrag von itst »

Du definierst zwar die SQL-Abfrage, führst sie aber nicht aus.

Code: Alles auswählen

$sql = "SELECT topic_id FROM phpbb_posts WHERE post_id = ".$forum_data[$j]['forum_last_post_id'];

if ( !($result = $db->sql_query($sql)) )
{
    // Fehler abfangen, siehe message_die()
}

$row = $db->sql_fetchrow($result);

$topic_id = $row['topic_id'];
Mal schnell aus dem Ärmle, keine Gewähr. Schau Dir mal die Datenbankabfragen in phpBB an, die funktionieren immer so.
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o
Antworten

Zurück zu „phpBB 2.0: Mod Suche/Anfragen“