[PHP] Newssystem für WBB
zeeman | 7. Mai 2006Wenn man ein Woltlab Burning Board besitzt, möchte man vielleicht auch ein kleines News-System damit betreiben:
Aus einem Board heraus soll jeder Threadstart eine News darstellen.
Kein Problem mit diesem kleinen Script.
Einfach nur die 3 (hoffentlich selbsterklärenden) Variablen am Anfang anpassen und das wars.
Es funktioniert bei wbb lite, keine Ahnung wie das mit anderen Versionen aussieht.
-
<?php
-
/** Newssystem welches auf wbb aufbaut
-
* @author Sebastian Just mailto:zeeman@zeeman.de
-
* 2006-05-05
-
*
-
* Konfigruationsdatei
-
*/
-
-
$news_category=".:News:."; // Muss genauso wie das Board geschrieben sein
-
$news_limit=4; // Maximale Anzahl an News die angezeigt werden
-
$forum_url="forum/"; // Relativer oder absoluter Pfad zum Forum
-
-
-
require ("$forum_url/acp/lib/class_parse.php");
-
require("$forum_url/acp/lib/config.inc.php");
-
require("$forum_url/acp/lib/class_db_mysql.php");
-
require("$forum_url/acp/lib/functions.php");
-
require("$forum_url/acp/lib/options.inc.php");
-
-
$db = new db($sqlhost,$sqluser,$sqlpassword,$sqldb,$phpversion);
-
-
/* Dient nur als Container*/
-
class News {
-
var $news_date;
-
var $news_author;
-
var $news_title;
-
var $news_text;
-
var $news_link;
-
}
-
-
/* Die News sind mit bb-code gespeichert. das missfällt etwas bei der Anzeige */
-
function formatNews($news_text) {
-
global $forum_url;
-
$text = new parse;
-
$text->showimages=1;
-
$text->prepareimages();
-
$text->doparse($news_text,1,1,1,1));
-
}
-
-
function formatTime($news_time) {
-
}
-
-
function formatLink($news_link) {
-
global $forum_url;
-
return "$forum_url/thread.php?goto=firstpost&threadid=$news_link";
-
}
-
-
/* Liefert ein Array an News zurück welches die (formatierten) News enthalten */
-
function getAllNews() {
-
global $news_category;
-
global $news_limit;
-
-
/* 1. Post eines jeden Threads in der News-Sektion auslesen */
-
$result = mysql_query( "SELECT t.threadid, starttime, starter, topic, message FROM `bb1_boards` as b ".
-
" INNER JOIN `bb1_threads` as t ON (b.boardID = t.boardID) " .
-
" INNER JOIN `bb1_posts` as p ON " .
-
"(t.starttime = p.posttime AND t.starter=p.username)" .
-
" WHERE b.title='". $news_category."' ".
-
// Wenn die Reihenfolge falsch ist, dann:
-
// " ORDER BY t.starttime ASC ". // einkommentieren
-
" ORDER BY t.starttime DESC ". // auskommentieren
-
" LIMIT ". $news_limit );
-
$news = new News;
-
$news->news_date = formatTime( $row["starttime"] );
-
$news->news_author = $row["starter"];
-
$news->news_title = $row["topic"];
-
$news->news_text = formatNews( $row["message"] );
-
$news->news_link = formatLink( $row["threadid"] );
-
-
$newsArray[] = $news;
-
}
-
return $newsArray;
-
}
-
?>
Zugegriffen wird auf das ganze einfach so (ja ist eigneltich kein HTML...):
-
<?php
-
/** Newssystem welches auf wbb aufbaut
-
* @author Sebastian Just mailto:zeeman@zeeman.de
-
* 2006-05-05
-
*
-
* Hauptdatei
-
*/
-
-
require("news.inc.php");
-
-
$newsArray = getAllNews();
-
?>
-
<html>
-
<bod>
-
<h2> Ein WBB Newssystem</h2>
-
<br />
-
<br />
-
-
<?php if ($newsArray) { ?> <table border=1, width=75%,>
-
-
<?php foreach ($news as $newsArray) { ?>
-
<tr>
-
</tr><tr>
-
</tr><tr>
-
<td width='50%'> <a href='<?php echo($news->news_link); ?>'>Antworten</a></td>
-
</tr>
-
-
<?php } ?>
-
-
</table> <?php } ?>
-
-
-
</bod></html>
Das ganze ist sehr auf wbb ausgerichtet und auf andere Foren wohl nur schwer zu übertragen (da dann wohl vor allem der JOIN auf die Schnauze fällt).
Auch mit dem {imagefolder} bin ich nicht ganz glücklich, wieß aber auch nicht wie und wo wbb diese Platzhalter durch die richtigen Werte ersetzt.
Wer seine Smileys also nicht unterhalb von /images liegen hat muss hier (Zeile 37 news.inc.php ) nacharbeiten!










