Aus externer Seite direkt zum letzten Post verlinken

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.
darkeyeX
Mitglied
Beiträge: 476
Registriert: 31.10.2004 14:40

Aus externer Seite direkt zum letzten Post verlinken

Beitrag von darkeyeX »

Das Forum befindet sich im Ordner "Forum" und auf der Startseite werden die letzten Themen angezeigt mittels einem Script "last_topics.php) Nun möchte ich aber, dass man beim Klicken auf den Autor direkt auf den letzten Beitrag eines jeweiligen Themas landet.

Folgendes befindet sich in der last_topics:

Code: Alles auswählen

// Strukturiertes Auslesen des Arrays und Variablenuebergabe
for( $i = 0; $i < count($line); $i++ )
{
$forum_id = $line[$i]['forum_id']; //Forums-ID
$topic_id = $line[$i]['topic_id']; //Themen-ID

$forum_url = $root_path .'forum' . $forum_id . '.html'; //Forums-Link
$topic_url = $root_path .'topic'. $topic_id . '.html'; //Themen-Link

// Ausgabeformat der Beitragsueberschrift (Thema)
$topic_title = ( strlen($line[$i]['topic_title']) < $topic_length ) ? $line[$i]['topic_title'] : substr(stripslashes($line[$i]['topic_title']), 0, $topic_length) .'...';

// Themenklassifizierung
$topic_type = ( $line[$i]['topic_type'] == '2' ) ? 'Beitrag ': '';
$topic_type .= ( $line[$i]['topic_type'] == '3' ) ? 'Globaler Beitrag ': '';
$topic_type .= ( $line[$i]['topic_type'] == '1' ) ? 'Kritischer Beitrag ': '';
$topic_type .= ( $line[$i]['topic_vote'] ) ? 'Abstimmung ': '';

$views = $line[$i]['topic_views'];
$replies = $line[$i]['topic_replies'];

$first_time = date('d.m.Y', $line[$i]['topic_time']);
$first_author = ( $line[$i]['first_poster_id'] != '-1' ) ? '<a href="'. $root_path .'profile.php?mode=viewprofile&u='. $line[$i]['first_poster_id'] .'" target="_blank">'. $line[$i]['first_poster'] .'</a>' : ( ($line[$i]['first_poster_name'] != '' ) ? $line[$i]['first_poster_name'] : 'guest' );
$last_time = date('d.m.Y', $line[$i]['post_time']);
$last_author = ( $line[$i]['last_poster_id'] != '-1' ) ? $line[$i]['last_poster'] : ( ($line[$i]['last_poster_name'] != '' ) ? $line[$i]['last_poster_name'] : 'guest' );
$last_url = '<a href="'. $root_path .'viewtopic.php?p='. $line[$i]['topic_last_post_id'] .'#'. $line[$i]['topic_last_post_id'] .'" target="_blank">'. $last_author .'</a>';

// ############## Eigentliche Ausgabe der Beitraege #############


echo '<ul><li><a href="'. $topic_url .'" target="_top">'. utf8_encode($topic_title) .'</a>';

echo ' in '. $line[$i]['forum_name'] .' von ';
// User, Bei Bedarf loeschen
echo $last_author.'</li></ul>';
kann mir einer sagen wie ich das anstellen kann? Habe schon viel mit "$last_url " experimientiert, jedoch ohne Erfolg bislang.
darkeyeX
Mitglied
Beiträge: 476
Registriert: 31.10.2004 14:40

Re: Aus externer Seite direkt zum letzten Post verlinken

Beitrag von darkeyeX »

Kann echt keiner helfen?

Hier ist meine komplette lasttopics.php:

Code: Alles auswählen

<?php
// ############ Anfang Festlegung der Vorgaben ########################################

// Laenge der angezeigten Themenueberschrift in Buchstaben
$topic_length = '60';

// Maximal angezeigte Beiträge
$topic_limit = '7';

// Eingeschraenkte Forumsanzeige ('0' = Aus; '1' = Ein)
$special_forums = '1';

// IDs der zugelassenen Foren (nur wenn Forumsanzeige = "1"); Trennung der IDs mit einem Komma
$forum_ids = '28';

// Relative Pfadangabe zur config.php
$config_path = '/';

// Absoluter Pfad des Forums auf dem Server, bitte eingeben !!!
$root_path = 'http://forum.domain.com/';



// ############ Ende Vorgaben #######################################

//Ermittlung des aktuellen Server-Verzeichnisses für Einbindung config.php
$path = dirname(__FILE__);

// Einbinden der phpBB-Konfigurationsdatei und somit Ermittlung der MySQL-Zugangsdaten
include_once($path.$config_path .'config.php');

// Verbindungsaufbau mit Zugangsdaten aus config.php, Fehlermeldung bei Problemen
mysql_connect($dbhost, $dbuser, $dbpasswd) OR die('Serververbindung fehlgeschlagen');

// Verbindung mit der phpBB-Datenbank herstellen
mysql_select_db($dbname) OR die('Datenbankverbindung fehlgeschlagen!');


//Abfrage ob Foreneinschraenkung gesetzt per Verzweigung und Uebergabe der moeglichen IDS an die Variable
$where_forums = ( $special_forums == '0' ) ? '' : 't.forum_id NOT IN ('. $forum_ids .') AND ';

//Definition der SQL-Abfrage
$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
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
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
ORDER BY t.topic_last_post_id DESC LIMIT $topic_limit";


//Durchfuehrung der SQL-Abfrage und Ergebnisuebergabe an $result
$result = mysql_query($sql);

// Wenn Abfrafge fehlgeschlagen = Fehlermeldung
if( !$result )

{
die('SQL-Abfrage fehlgeschlagen!: '. mysql_error());
exit();
}

//Definition Array für Aufnahme der Abfragedaten
$line = array();

// Uebergabe der Daten bis zum letzten Datensatz an Array per Schleife
while( $row = mysql_fetch_array($result) )

{
$line[] = $row;
}

// Strukturiertes Auslesen des Arrays und Variablenuebergabe
for( $i = 0; $i < count($line); $i++ )
{
$forum_id = $line[$i]['forum_id']; //Forums-ID
$topic_id = $line[$i]['topic_id']; //Themen-ID

$forum_url = $root_path .'forum' . $forum_id . '.html'; //Forums-Link
$topic_url = $root_path .'topic'. $topic_id . '.html'; //Themen-Link

// Ausgabeformat der Beitragsueberschrift (Thema)
$topic_title = ( strlen($line[$i]['topic_title']) < $topic_length ) ? $line[$i]['topic_title'] : substr(stripslashes($line[$i]['topic_title']), 0, $topic_length) .'...';

// Themenklassifizierung
$topic_type = ( $line[$i]['topic_type'] == '2' ) ? 'Beitrag ': '';
$topic_type .= ( $line[$i]['topic_type'] == '3' ) ? 'Globaler Beitrag ': '';
$topic_type .= ( $line[$i]['topic_type'] == '1' ) ? 'Kritischer Beitrag ': '';
$topic_type .= ( $line[$i]['topic_vote'] ) ? 'Abstimmung ': '';

$views = $line[$i]['topic_views'];
$replies = $line[$i]['topic_replies'];

$first_time = date('d.m.Y', $line[$i]['topic_time']);
$first_author = ( $line[$i]['first_poster_id'] != '-1' ) ? '<a href="'. $root_path .'profile.php?mode=viewprofile&u='. $line[$i]['first_poster_id'] .'" target="_blank">'. $line[$i]['first_poster'] .'</a>' : ( ($line[$i]['first_poster_name'] != '' ) ? $line[$i]['first_poster_name'] : 'guest' );
$last_time = date('d.m.Y', $line[$i]['post_time']);
$last_author = ( $line[$i]['last_poster_id'] != '-1' ) ? $line[$i]['last_poster'] : ( ($line[$i]['last_poster_name'] != '' ) ? $line[$i]['last_poster_name'] : 'guest' );
$last_url = '<a href="'. $root_path .'viewtopic.php?p='. $line[$i]['topic_last_post_id'] .'#'. $line[$i]['topic_last_post_id'] .'" target="_blank">'. $last_author .'</a>';

// ############## Eigentliche Ausgabe der Beitraege #############



echo '<ul><li><a href="'. $topic_url .'" target="_top">'. utf8_encode($topic_title) .'</a>';

echo ' in <a href="'. $forum_url .'" target="_top" style="text-decoration:none">'. $line[$i]['forum_name'] .'</a> von ';
// User, Bei Bedarf loeschen
echo $last_author.' (';
// Datum, Bei Bedarf loeschen
echo $last_time.')</li></ul>';


// ############## Ende Eigentliche Ausgabe ##############
}

mysql_close(); // Beendigung der Datenbankverbindung
?>

Was kann ich tun, damit es einen Link zum letzten Post gibt?
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Aus externer Seite direkt zum letzten Post verlinken

Beitrag von gn#36 »

Die ID des Posts müsste in dem Feld topic_last_post_id der topics Tabelle stehen, die du per SQL ja komplett mit ausliest. Die musst du nur nehmen und in einen Link einbauen. Also sowas wie $post_id = $line[$i]['topic_last_post_id'];

Einen Link auf einen Post mit bekannter post_id kannst du dann selbst zusammenbauen als:

Code: Alles auswählen

http://deinedomain.de/pfadzumforum/viewtopic.php?p=$post_id
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
darkeyeX
Mitglied
Beiträge: 476
Registriert: 31.10.2004 14:40

Re: Aus externer Seite direkt zum letzten Post verlinken

Beitrag von darkeyeX »

Danke für deine Hilfe. Leider reichen meine PHP Kenntnisse nicht aus um das umzusetzen.

ich habe nun

Code: Alles auswählen

$line[$i]['topic_last_post_id'];
hinzugefügt. Anschließend "probierte" ich folgendes in der Ausgabe:

Code: Alles auswählen

echo '<a href="'. $topic_url .'?p='. $post_id .'" target="_top">'. $last_author .'</a>'; 
Würde gerne den Autor mit dem letzten Post verlinken. Wie müsste dazu der entsprechende Code lauten?
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Aus externer Seite direkt zum letzten Post verlinken

Beitrag von gn#36 »

Du hast aber damit in keiner Weise das umgesetzt was ich geschrieben habe.

Code: Alles auswählen

$post_id = $line[$i]['topic_last_post_id'];
$post_link = $root_path . 'viewtopic.php?p=' . $post_id . '#p' . $post_id;
Aber das kannst du dir sogar sparen, da die URL mitsamt HTML Umklammerung schon als $last_url existiert. Du musst also nur echo $last_url; nutzen.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
darkeyeX
Mitglied
Beiträge: 476
Registriert: 31.10.2004 14:40

Re: Aus externer Seite direkt zum letzten Post verlinken

Beitrag von darkeyeX »

wenn ich nur echo $last_url; einfüge, klappt es auch nicht ganz. Es erscheint zwar ein verlinkter Autorenname, doch der Link führt zu ner falschen Seite, nämlich nach http://domain.com/viewtopic.php?p=87125#87125
Die letzte post id ist wahrscheinlich falsch weil sie doppelt ist.

Außerdem stört mich "viewtopic.php" in der Url.. Ich habe eine SEO Mod mit suchmaschinenfreundlichen Urls im Einsatz und die Urls sehen in etwa so aus: online.com/forum1.html, online.com/topic8945.html
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Aus externer Seite direkt zum letzten Post verlinken

Beitrag von gn#36 »

Tja, die URL ist fast korrekt, denn da fehlt nach dem "#" nur ein p. Dass die ID doppelt ist, ist korrekt, dein angegebener Link sieht für mich abgesehen von dem fehlenden p nach dem # auch korrekt aus. Und das sollte nicht zu einer falschen Seite führen.

Mit SEO Extensions kenne ich mich leider nicht aus, außerdem halte ich die für überflüssig. Wenn der Link gar nicht funktioniert (und nicht nur am Ende nicht zur korrekten Stelle auf der Seite springt), dann ist vermutlich die SEO Extension/Mod daran schuld. Wenn der Link anders aussehen soll, wirst du ihn durch die SEO Erweiterung jagen müssen, die den Link dann umbaut. Was an online.com/topic8945.html besser sein soll als online.com/viewtopic.php?t=8945 ist mir auch schleierhaft. Das nützt dem Benutzer nichts, weil er keinerlei Infos aus der URL gewinnen kann, merken kann er sich sie auch nicht, weil die gleichen Zahlen drin vorkommen und den Suchmaschinen ist das eh egal, die kommen schon seit Jahren problemlos mit der Standardvariante klar.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
Joyce&Luna
Mitglied
Beiträge: 2471
Registriert: 24.11.2013 18:14
Wohnort: NRW
Kontaktdaten:

Re: Aus externer Seite direkt zum letzten Post verlinken

Beitrag von Joyce&Luna »

Vielleicht hilft dir ja das weiter.

Installiere dir diese Extension die sich Post Numbers nennt.
https://www.phpbb.com/community/viewtop ... &t=2314116

Da hast du die Möglichkeit wenn du auf die Beitragszahl klickst einen Link zu kopieren und diesen Link kannst du überall nutzen.
Wenn man darauf klickt springt man genau zu diesem Beitrag.

Anke
phpBB-Style-Design.de

Keine Antwort ist die eindeutigste Antwort, die man kriegen kann.
Bitte stellt die Fragen im Forum und nicht per PN. Danke!
darkeyeX
Mitglied
Beiträge: 476
Registriert: 31.10.2004 14:40

Re: Aus externer Seite direkt zum letzten Post verlinken

Beitrag von darkeyeX »

Danke für den Hinweis, du hast mir viel weitergeholfen. Mit dem p nach dem # klappt die Url. Ich möchte trotzdem die SEO Variante haben... ich bin auch kurz davor, mir fehlt jetzt nur noch eine Kleinigkeit:

Code: Alles auswählen

$last_url = '<a href="'. $root_path .'topic'. $line[$i]['topic_last_post_id'] .'.html#p'. $line[$i]['topic_last_post_id'] .'">'. $last_author .'</a>'; 
Die Url sieht dann so aus: http://online.com/topic87128.html#p87128

Das einzige was nicht korrekt ist, ist die erste "87128". Dort müsste die Themen ID stehen. Was muss ich statt

Code: Alles auswählen

topic_last_post_id'
benutzen damit die Themen ID angezeigt wird?



Zum Thema Seo-freundliche Urls... du hast sicherlich nicht unrecht, momentan möchte ich aber noch die SEO Urls nutzen. Das Forum existiert seit ca 10 Jahren stets mit der selben Url Struktur, ein Umstieg ist erstmal nicht so einfach. Wobei ich gerne früher oder später auf die normale Url Struktur setzen möchte...
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Aus externer Seite direkt zum letzten Post verlinken

Beitrag von gn#36 »

So einfach wird das nicht sein, dass du da einfach die topic_id einsetzen kannst. Denn, wenn das Thema mehr als eine Seite hat, dann musst du angeben, auf welcher Seite dein Beitrag liegt, wenn du nicht einfach auf den Beitrag verweist mit p.

Die topic_id ist auch als solche bezeichnet, also entsprechend $line[$i]['topic_id'] oder so ähnlich. Aber wie gesagt - der liegt nicht unbedingt auf der ersten Seite.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Antworten

Zurück zu „Coding & Technik“