mithilfe eines PHP-Scriptes im root des Forums lese ich aus der Datenbank ua. den Inhalt des Startposts des aktuellesten Themas eines bestimmten Forums aus, um ihn auf der Startseite des Forums anzuzeigen. Allerdings wird der Code dann so angezeigt wie, er in der Datenbank steht und die BBCodes werden nicht geparst.
Hier das Script:
Code: Alles auswählen
<?php
// ############ Anfang Festlegung der Vorgaben ########################################
// Laenge der angezeigten Themenueberschrift in Buchstaben
$topic_length = '64';
// Maximal angezeigte Beiträge
$topic_limit = '1';
// 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 = '3';
// Relative Pfadangabe zur config.php
$config_path = '';
// Absoluter Pfad des Forums auf dem Server, bitte eingeben !!!
$root_path = 'http://freibrief.net/';
//ckn
$table_prefix = "phpbb_";
//mysql_connect($dbhost, $dbuser, $dbpasswd) OR die('Serververbindung fehlgeschlagen');
// ############ 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("localhost", "***", "***") OR die('Serververbindung fehlgeschlagen');
// Verbindung mit der phpBB-Datenbank herstellen
mysql_select_db("***") 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 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, p.post_text AS content
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_first_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
$forum_url = $root_path .'viewforum.php?f='. $forum_id; //Forums-Link
$topic_id = $line[$i]['topic_id']; //Themen-ID
$topic_url = $root_path .'viewtopic.php?t='. $topic_id; //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>';
$last_content = $line[$i]['content'];
// ############## Eigentliche Ausgabe der Beitraege #############
echo '<div>';
// Forumsname und Link, bei Bedarf loeschen
echo '<p><a href="'. $forum_url .'" target="_blank">'. $line[$i]['forum_name'] .'</a><br />';
// User, Bei Bedarf loeschen
echo $last_url.'<br />';
// Datum, Bei Bedarf loeschen
echo $last_time.'<br />';
// Thema und Link, Bei Bedarf loeschen
echo '<a href="'. $topic_url .'" target="_blank">'. $topic_title .'</font></a></p>
</div><br />';
echo $last_content;
// ############## Ende Eigentliche Ausgabe ##############
}
mysql_close(); // Beendigung der Datenbankverbindung
?>
-gibt es dafür eine elegantere Methode? Ich musste INCLUDEPHP aktivieren um das Script vom Template zu inkludieren. Diese Anzeige brauche ich auch nur im Forum selbst, also sollte sich das anders realisieren lassen.
Vielen Dank schonmal für eure Antworten!
MFG CKN