Url "letzter Beitrag"
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.
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.
Url "letzter Beitrag"
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?
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?
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?
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?

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.
*Hier* hat man sich zu dem Problem auch Gedanken gemacht.
...keine Angst, ich führe gerne Selbstgepräche ...
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?

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.

- itst
- Ehrenadmin
- Beiträge: 7418
- Registriert: 21.08.2001 02:00
- Wohnort: Büttelborn bei Darmstadt
- Kontaktdaten:
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:
Damit bekommst Du die topic_id dieses Posts.
Code: Alles auswählen
$sql = "SELECT topic_id FROM phpbb_topics WHERE topic_last_post_id = " . $forum_data[$j]['forum_last_post_id'];
Sascha A. Carlin,
phpBB.de Ehrenadministrator
phpBB.de Ehrenadministrator

hi,
danke für die Antwort!
Folgendes müsste ja eigentlich auch funktionieren: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.
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'];
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.
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>';
}
- itst
- Ehrenadmin
- Beiträge: 7418
- Registriert: 21.08.2001 02:00
- Wohnort: Büttelborn bei Darmstadt
- Kontaktdaten:
Du definierst zwar die SQL-Abfrage, führst sie aber nicht aus.
Mal schnell aus dem Ärmle, keine Gewähr. Schau Dir mal die Datenbankabfragen in phpBB an, die funktionieren immer so.
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'];
Sascha A. Carlin,
phpBB.de Ehrenadministrator
phpBB.de Ehrenadministrator
