WBB - Top5 Für eure Website

  • Hallo,


    Momentan, bin ich am Arbeiten eines, "Samp Web" Content Management System (CMS) Für SA-MP: Dieses ist Modular Aufgebaut, bzw. Besitzt ein Modul System. Und eines Dieser Module will ich euch Heute schon einmal Vorstellen, so gesehen als "Promo" :)


    Was ist WBB_INIT(TOP5)...
    Mit Diesen Modul (Kannst du auf Samp-Web, auf der Startseite foren Posts aus deinem Forum Anzeigen lassen) WBB_INIT das was ich nun hier Anbiete kannst du jederzeit auf deiner eigenen Homepage Einbauen und Threads Anzeigen lassen.


    ..Wozu brauche ich das?
    Brauchen, das ist immer so ne frage, Man hat neben dem Forum noch eine Website bzw auch eine Enterpage und möchte gerne dort Die letzten bzw Threads von seinem Forum Anzeigen lassen. So kann man das gesehen auch außerhalb des Forums Verfolgen.


    Zum Script..
    Es werden, Icons Angezeigt (Je nach Thread Art: Ankündigung,Wichtig,Info,Normal) Username, Views, und Post Thread, sowie Link zum Thread
    Thema | Benutzername | Zugriffe | Antworten


    wbb_class.php [Auszug]

    PHP
    <?php/*	Copyright 2012 By SaFace 	Read the Readme file	SaFace -> sa-mp.de	WBB_INIT (Modul for Base Script)	Pre Relasse*/class LastPosts {// Datenbank Connectpublic function connectDatabase($dbHost, $dbUser, $dbPass, $dbName){		$connect = mysql_connect($dbHost, $dbUser, $dbPass);		mysql_select_db($dbName);}// WBB Letzte Posts Auslesenpublic function getLastPosts($excludedBoards, $limit){	$sql = "SELECT * 					FROM wbb1_1_thread 						WHERE boardID NOT IN (".$excludedBoards.")  							ORDER BY lastPostTime DESC								LIMIT ".$limit;$result = mysql_query($sql);return $result;}public function displayPost($post, $forumPath, $wcfPath)	{		echo '<tr>				<td>					<div class="threadIcon" style="display:inline;">';		if($post['isSticky'] == 0 && $post['isAnnouncement'] == 0 && $post['isClosed'] == 0)		{			echo '<img src="'.$forumPath.'icon/threadS.png" alt="" />';		}			elseif($post['isSticky'] == 0 && $post['isAnnouncement'] == 0 && $post['isClosed'] == 1)		{			echo '<img src="'.$forumPath.'icon/threadClosedM.png" alt="" width="16px" height="16px"/>';		}		elseif($post['isSticky'] == 1 && $post['isAnnouncement'] == 0 && $post['isClosed'] == 0)		{			echo '<img src="'.$forumPath.'icon/threadImportantM.png" alt="" width="16px" height="16px"/>';		}		elseif($post['isSticky'] == 1 && $post['isAnnouncement'] == 0 && $post['isClosed'] == 1)		{			echo '<img src="'.$forumPath.'icon/threadImportantClosedM.png" alt="" width="16px" height="16px"/>';		}		elseif($post['isSticky'] == 0 && $post['isAnnouncement'] == 1 && $post['isClosed'] == 0)		{			echo '<img src="'.$forumPath.'icon/threadAnnouncementM.png" alt="" width="16px" height="16px"/>';		}		elseif($post['isSticky'] == 0 && $post['isAnnouncement'] == 1 && $post['isClosed'] == 1)		{			echo '<img src="'.$forumPath.'icon/threadAnnouncementClosedM.png" alt="" width="16px" height="16px"/>';		} 		echo'		</div>								<div style="display:inline;">					<a href="'.$forumPath.'index.php?page=Thread&amp;threadID='.$post['threadID'].'&amp;action=firstNew">						<span class="prefix">							<strong>							'.utf8_encode($post['prefix']).'							</strong>						</span>						<span>						'.utf8_encode($post['topic']).'						</span>					</a>					</div>					<div class="threadInfo" style="display:inline;">'; 		if($post['attachments'] >= 1)		{			echo '<img src="'.$wcfPath.'icon/attachmentsS.png" alt="" width="16px" height="16px"/>';		}		if($post['polls'] >= 1)		{			echo '<img src="'.$wcfPath.'icon/pollS.png" alt="" width="16px" height="16px"/>';		}		echo'		</div>				</td>							<td>					<a href="'.$forumPath.'index.php?page=Thread&amp;threadID='.$post['threadID'].'&amp;action=lastPost">						<img src="'.$forumPath.'icon/goToLastPostS.png" alt="" style="border:none;" />					</a>					<a href="'.$forumPath.'index.php?page=User&amp;userID='.$post['userID'].'">						<span class="smallFont" style="font-size: 0.8em;">							'.utf8_encode($post['lastPoster']).'						</span>					</a>					<span class="smallFont" style="font-size: 0.8em;"> &nbsp;'; 		if(date("d",$post['lastPostTime']) == date("d", time()))		{			echo'(<strong>Heute,</strong>&nbsp;'.date("H:m",$post['lastPostTime']).')';		}		elseif(date("d",$post['lastPostTime']) == (date("d", time())-1))		{			echo'(Gestern,&nbsp;'.date("H:m",$post['lastPostTime']).')';		}		else		{			  			echo'('.date("d.M.Y, H:m",$post['lastPostTime']).')';		}		echo'		</span>				</td>				<td>				';		if($post['views'] >= 100)		{		echo '<strong>'.$post['views'].'</strong>';		}			else		{		echo $post['views'];		}			echo'				</td>				<td>';		if($post['replies'] >= 100)		{		echo '<strong>'.$post['replies'].'</strong>';		}			else		{		echo $post['replies'];		}			echo'			</td>			</tr>';	}}?>



    wbb_top_config.php

    PHP
    <?php/*	Copyright 2012 By SaFace 	Read the Readme file	SaFace -> sa-mp.de	WBB_INIT (Modul for Base Script)	Pre Relasse*/function wbb_init_top5 () {$lastPosts = new LastPosts();$wbbhost 		= "*********";	//Datenbank Host eg: localhost$wbbuser 		= "*********";	//Datenbank Benutzername$wbbpass 		= "*********";	//Datenbank Password$wbbdatabase 	= "*********"; 	//Datenbank Namemysql_connect($wbbhost, $wbbuser, $wbbpass) or die ( "Datenbankserver nicht erreichbar");mysql_select_db($wbbdatabase) or die ( "Datenbank nicht vorhanden"); //Pfad zum Forum wenn forum selbst im Root Ordner liegt einfach /$forumPath = '/support/';// WCF Datei Community Freamwork des Woltlabs Forum. eg /wcf/$wcfPath = '/wcf/';$excludedBoards = "43, 47, 48, 54";//Post Limit$limit = 10;// Datenbank Connect$lastPosts->connectDatabase($databaseHost, $databaseUserName, $databasePassword, $databaseName); // GET LAST POSTS$latestPosts = $lastPosts->getLastPosts($excludedBoards, $limit);?><table border="0" width="99%" align="">        	<thead><tr>            	<th align="left">Thema</th>            	<th align="left">Benutzername</th>            	<th align="left">Zugriffe</th>            	<th align="left">Antworten</th>           	</tr>         	<?phpwhile($post = mysql_fetch_array($latestPosts)){$lastPosts->displayPost($post, $forumPath, $wcfPath);}?>   </thead></table>  <? } ?>


    Wichtig, Datenbank zum Forum sowie den Pfad Anpassen. [wbb_top_config.php]


    PHP
    $wbbhost 		= "*********";	//Datenbank Host eg: localhost
    $wbbuser 		= "*********";	//Datenbank Benutzername
    $wbbpass 		= "*********";	//Datenbank Password
    $wbbdatabase 	= "*********"; 	//Datenbank Name


    Sowie

    PHP
    //Pfad zum Forum wenn forum selbst im Root Ordner liegt einfach /
    $forumPath = '/support/';
    // WCF Datei Community Freamwork des Woltlabs Forum. eg /wcf/
    $wcfPath = '/wcf/';



    .. Installations Anleitung
    Wie installiere ich die TOP5 auf meiner Website / Enterpage? Simpel.
    Entpacke das Script bzw den Ordner auf deinen Webspace im Hauptverzeichnis deines Scriptes bzw Website / Enterpage.
    nun sollte ein Ordner namens, wbb_init vorhanden sein.


    Füge dies in deine index.php (oder funktIons.php) ein. Wie auch immer :)
    Verweise auf diese Files

    PHP
    include "wbb_init/wbb_class.php";
    include "wbb_init/wbb_top_config.php";


    so nun kannst du nach dem auch MySQL und die Pfade zu deinem Forum Angepasst sind
    mit

    PHP
    wbb_init_top5 ()


    Auf deine Top5 Statistik Verweisen.


    Diese Funktion fügst du nun z.B in deiner (.tpl) bzw Template Datei ein.


    Wichtig
    Falls du dies bei dir einbaust, wäre ich Froh wenn du mir eine kleine PM Senden würdest, mit einem Link wo du dies Einbaust. Dies Dient für mich als kleine Referenz.



    Ganzes Script Downloaden: http://www.xup.in/dl,13518869/wbb_init.rar/
    Password: saface


    Liebe Grüße



    2 Mal editiert, zuletzt von SaFace ()

  • Mir ist das Ganze zu statisch! Besser wäre es, wenn du ein Array mit allen wichtigen Daten zurückgeben würdest. Darunter fallen Icon, Datum, Nutzername (formatiert!), NutzerID, Text, Forenname (z.B. News), ForenID, ...
    Aber eine vorgebaute Ausgabe, dazu auch noch mit Tables, ist einfach schwachsinnig. Funktion LastPosts::displayPost() kann also getrost raus.


    Die Klasse ist leider absolut nicht abstrahierbar, aber lassen wir das vorerst außer Acht.


    Wozu LastPosts::connectDatabase()? Das kannst du auch einfach im Konstruktor erledigen. Gleich dazu solltest du da auch den WBB- und WCF-Pfad festlegen. Die Installationsnummer ist dir anscheinend ganz egal. Was ist nun aber, wenn 2 Foren in einer Datenbank installiert sind oder wenn das Forum eine andere Installationsnummer als 1_1 hat? Richtig, es wird nicht (richtig) funktionieren.


    Noch was: Warum greifst du nicht auf die Klassen des WCF zurück? Du kannst nahezu alle auch extern verwenden. Das würde dir eine menge Aufwand sparen und das immerhin etwas einheitlicher gestalten.


    Zu guter Letzt ist der Query in LastPosts::getLastPosts() nicht wirklich intelligent. Wenn nun bei $excludedBoards und/oder $limit keine Zahl sondern ein/mehrere Zeichen steht/stehen, wird dir das einen schönen MySQL-Fehler auswerfen.

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • Das was du Ansprichst, dies ist mir zu Gelegenheit, nach dem ich diesen "Schnipsel" aussortiert habe als Plugin auch aufgefallen.
    Dies wurde wie gesagt, alles aus einem Plugin rausgeholt, was es so nicht gibt, bzw. Ich habe mir da nun nicht wirklich viel mühe gegeben, was evtl, Cleverer gewesen wäre.


    im Allgemeinen ist es dennoch richtig. Ich habe das vorhandenen Dinge nicht aus dem WCF genommen, da diese mich kein bisschen interessieren, denn die Grund Idee ist dennoch ein eigenes Plugin dazu, bzw wie ich oben schon erwähnt habe, dieses "Plugin / Script" was ich veröffentlicht habe, ist Sogesehen aus einen Fertigen Plugin "Ausgeschnitten" worden.


    auf eine Effiziente, Übermittlung, der Querys "zu guter letzt" habe ich kein bisschen darauf geachtet.
    Da ich auch nicht dachte das, dies nun viel wirbel macht, ein kleinen beitrag habe ich dennoch geleistet.


    ich werde aber auch keine Überarbeitung anbieten, deshalb sollte evtl, darauf hinverwiesen werden, das ich demnächst so oder so,
    ein Script Veröffentlichen werde, wo man sich das ganze noch einmal anschauen kann :)


    Dennoch danke
    Grüße