X aktuellste Forumsbeiträge in CPO darstellen?!

Hier können allgemeine Fragen zu PHP gestellt und diskutiert werden.
Antworten
Ralf
ConPresso-Checker
Beiträge: 205
Registriert: 25.08.2005 10:58
Hat sich bedankt: 65 Mal
Danksagung erhalten: 14 Mal

X aktuellste Forumsbeiträge in CPO darstellen?!

Beitrag von Ralf »

Hallo zusammen,

mich würde heute mal interessieren, wie das CPO-Team die Integration von den "Neuen Beiträge in der Community" auf ihrer Homepage/ Startseite realisiert haben?!!

Da ich auch ein Forum (phpbb) betreibe fände ich dieses Zusatzfeature recht nett für die Homepage-User.

Also liebes Conpresso-Team, seid doch bitte mal so lieb und helft uns bei dieser tollen Integration für unsere eigene Homepage oder ist dies als MOD geplant??

Vielen DANK

cu Ralf
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7361
Registriert: 01.01.1970 01:00
Hat sich bedankt: 110 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Solche Erweiterungen gibt es massenweise bei phpBB.com und phpBB.de zum Download.
Hier im Forum ist dies auch nur ein wenig angepasst.

Das kann dann z.B. so aussehen

Code: Alles auswählen

<?php
/**
* Mod Title:   Latest Topics
* Mod Version: phpBB 2.0.4
* Author:      Charlie Page
* Description: Shows latest topics on any page
* Release:     v1.0, 05.30.2004
***
* Demo:                http://www.xboxassassin.com/e3
* Installation Level:  Easy 
* Installation Time:   1 minute
* Files To Edit:       This one 
* Included Files:      php-latest.php
***
* Installation Notes:
* Upload this file and set $ppath and $url, 
* Include this into a page and your done!
*/
$url = "../forum";	// If url is - http://www.yourforums.com/forums , then enter in "/forums"
$ppath = "/home/domain.de/public_html/forum/config.php";    // Physical path to the config.php file
if(empty($count))
	$count = "20";    // How many topics to link to

//-----------------[ DO NOT EDIT BELOW HERE ]------------------------- 
include_once("$ppath"); 
$db = @mysql_connect("$dbhost", "$dbuser", "$dbpasswd") or die("here we die at connection"); 
@mysql_select_db("$dbname",$db) or die("here we die"); 

$prefix = "$table_prefix";

$query = "SELECT * FROM ( ".$prefix."topics LEFT JOIN  ".$prefix."forums ON ".$prefix."topics.forum_id = ".$prefix."forums.forum_id ) WHERE ".$prefix."forums.auth_view = 0 ORDER BY `topic_id` DESC LIMIT 0, ".$count;
//echo $query;
		$result=mysql_query($query);
		while($row = mysql_fetch_array($result)) {
		$topicid = $row["topic_id"];
		$title = $row["topic_title"];
		$forumid = $row["forum_id"];
		$replies = $row["topic_replies"];

echo "<a title=\"$title\" href=\"$url/viewtopic.php?t=$topicid\">$title</a> ($replies)<hr>"; 

}
?>
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Ralf
ConPresso-Checker
Beiträge: 205
Registriert: 25.08.2005 10:58
Hat sich bedankt: 65 Mal
Danksagung erhalten: 14 Mal

Beitrag von Ralf »

@ MarkusR

Danke, jedoch mit diesem Skript/ DB Abfrage wird mir leider nur der "Title" und die Anzahl der Antworten darauf angezeigt! Ich hätte es aber eben gerne so wie auf der CPO Seite.

Was mir aber dazu jetzt noch fehlt, ist eben die richtige DB Abfrage :roll:

Könntest du mir da evtl. auch noch weiterhelfen?

Thanks cu Ralf
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7361
Registriert: 01.01.1970 01:00
Hat sich bedankt: 110 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Die letzte Version kann Dir nur Balu geben, aber das hier gibt auch die Texte (ohne BB-Code) aus:

Code: Alles auswählen

<?php
// Dies hier bitte anpassen -------------------------
$url = "http://community.conpresso.de";	// If url is - http://www.yourforums.com/forums , then enter in "/forums"
$ppath = "/home/domain.de/community/htdocs/config.php";    // Physical path to the config.php file
$count = "20";    // How many topics to link to
$timeformat = "d.m.Y H:i";
$max_length = 200;
// ---------------------------------------------------

include_once("$ppath"); 
$db = @mysql_connect("$dbhost", "$dbuser", "$dbpasswd") or die("here we die at connection"); 
@mysql_select_db("$dbname",$db) or die("here we die"); 

$prefix = "$table_prefix";

// if you're interested in topics
// $query = "SELECT * FROM ".$prefix."topics t, ".$prefix."forums f, ".$prefix."users u, ".$prefix."posts_text p WHERE f.auth_view = 0 AND t.forum_id = f.forum_id AND t.topic_poster = u.user_id AND t.topic_last_post_id = p.post_id ORDER BY t.topic_id DESC LIMIT 0 , ".$count;

// if your're interested in posts
$query = "SELECT * FROM ".$prefix."topics t, ".$prefix."forums f, ".$prefix."users u, ".$prefix."posts b, ".$prefix."posts_text p WHERE f.auth_view = 0 AND t.forum_id = f.forum_id AND b.poster_id = u.user_id AND t.topic_last_post_id = p.post_id AND t.topic_last_post_id = b.post_id ORDER BY p.post_id DESC LIMIT 0 , ".$count;

$result=mysql_query($query);

while($row = mysql_fetch_array($result)) {
	$topicid = $row["topic_id"];
	$topic_time = date($timeformat,$row["post_time"]);
	$title = $row["topic_title"];
	$forumid = $row["forum_id"];
	$post_text = preg_replace('/\[(.*?):(.*?)\]/si','',$row["post_text"]);
	$post_text = (strlen($post_text) > $max_length ) ? substr($post_text ,0,$max_length-3)."..." : $post_text ;
	$username = $row["username"];
	$forum_name = $row["forum_name"];

// Hier die eigentliche Ausgabe
	echo "<h2>$topic_time, <a href=\"$url/viewtopic.php?t=$topicid\" target=\"_blank\">$title</a></h2>";
	echo "<p>$post_text</p>";
	echo "Forum: $forum_name<br />";
	echo "Autor: $username <br />";
}
?>
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7361
Registriert: 01.01.1970 01:00
Hat sich bedankt: 110 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Du solltest Dich aber wirklich mal auf den phpBB-Seiten (auch bei phpBB-Hacks) umsehen, da gibt es davon viele Spielarten.
Dies hat mit ConPresso an sich rein gar nichts zu tun...
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Ralf
ConPresso-Checker
Beiträge: 205
Registriert: 25.08.2005 10:58
Hat sich bedankt: 65 Mal
Danksagung erhalten: 14 Mal

Beitrag von Ralf »

Hallo MarkusR

danke ja, da bin ich jetzt schon auch 3 Stunden drauf unterwegs, ... aber die meisten binden es nur direkt ein oder wenn extern dann eigentlich nicht so wie auf CPO und ich dachte eben wenn ich es genau so (die gleichen ausgaben wie CPO) haben möchte könnte ich ja mal hier fragen :roll:

Aber ich teste gleich mal den Code von oben und evtl. postet ja Balu noch den aktuellsten Code von der Homepage 8)

cu Ralf
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Dann tue ich das mal:

Code: Alles auswählen

<?
// Dies hier bitte anpassen -------------------------
$url = 'http://www.example.com';    // If url is - http://www.yourforums.com/forums , then enter in "/forums"
$ppath = 'config.php';                     // Physical path to the config.php file
if (empty($count)) $count = 2;             // How many topics to link to
$timeformat = 'd.m.Y H:i';
$max_length = 200;
// ---------------------------------------------------

include_once($ppath);
$db = @mysql_connect($dbhost, $dbuser, $dbpasswd)
        or die('here we die at connection');
@mysql_select_db($dbname, $db)
        or die('here we die at select');

$prefix = $table_prefix;

// if you're interested in topics
// $query = "SELECT * FROM ".$prefix."topics t, ".$prefix."forums f, ".$prefix."users u, ".$prefix."posts_text p WHERE f.auth_view = 0 AND t.forum_id = f.forum_id AND t.topic_poster = u.user_id AND t.topic_last_post_id = p.post_id ORDER BY t.topic_id DESC LIMIT 0 , ".$count;

// if your're interested in posts
$query = 'SELECT * FROM '.$prefix.'topics t, '.$prefix.'forums f, '.$prefix.'users u, '.$prefix.'posts b, '.$prefix.'posts_text p '
        .'WHERE f.auth_view = 0 '
        .'AND t.forum_id = f.forum_id '
        .'AND b.poster_id = u.user_id '
        .'AND t.topic_last_post_id = p.post_id '
        .'AND t.topic_last_post_id = b.post_id '
        .'ORDER BY p.post_id DESC '
        .'LIMIT 0, '.$count;

$result=mysql_query($query);

while($row = mysql_fetch_array($result)) {
    $post_text = $row['post_text'];
    $post_text = preg_replace('/\[(.*?):?(.*?)\]/si', '', $post_text);
    $post_text =
        (strlen($post_text)>$max_length )
        ? substr($post_text ,0,$max_length-3).'...'
        : $post_text;

    echo '<div class="cponews">';
        echo '<h4>';
        echo date('d.m.Y', $row['post_time']).' '.date('H:i', $row['post_time']).' | ';
        echo $row['topic_title'];
        echo '</h4>';
        echo htmlspecialchars($row['username']);
        echo ' schreibt in ';
        echo '<a href="'.$url.'/viewforum.php?f='.(int)$row["forum_id"].'">'.htmlspecialchars($row['forum_name']).'</a>: ';
        echo '<blockquote style="font-style: italic; margin: 0; padding: 0;">'.$post_text;
        echo ' <a href="'.$url.'/viewtopic.php?t='.(int)$row['topic_id'].'" target="_blank" style="font-style: normal;">&raquo;&nbsp;Beitrag&nbsp;lesen</a>';
        echo '</blockquote>';
    echo '</div>';
}
?>
In der config.php stehen die Zugangsdaten zur Datenbank:

Code: Alles auswählen

<?php


// phpBB 2.x auto-generated config file
// Do not change anything in this file!

$dbms = 'mysql';

$dbhost = 'localhost';
$dbname = 'Datenbankname';
$dbuser = 'Datenbankuser';
$dbpasswd = 'Datenbankpasswort';

$table_prefix = 'phpbb_';

define('PHPBB_INSTALLED', true);

?>
Ralf
ConPresso-Checker
Beiträge: 205
Registriert: 25.08.2005 10:58
Hat sich bedankt: 65 Mal
Danksagung erhalten: 14 Mal

Beitrag von Ralf »

Hallo Balu,

vielen herzlichen Dank für diesen Code!!!

Ich habe ihn jetzt mal gleich getestet, und muss sagen er funktioniert wunderbar (hat der Code von MarkusR aber auch) :wink:

Was mir jedoch noch nicht ganz so gefallen hat, war das wenn ich auf den Link "Beitrag lesen" klicke er mich nicht direkt zu DIESEM Artikel bringt sondern zu dem Thema wo dieser Artikel drin steht. Was für meinen Fall aber leider nicht so passend ist, da ich Themen mit oft sehr vielen Seiten habe.
Deshalb habe ich euren Code nocht etwas angepasst. Für alle anderen die auch daran interesse haben ...

Code Änderungen für den Code von Balu

Suche:

Code: Alles auswählen

<a href="'.$url.'/viewtopic.php?t='.(int)$row['topic_id'].'"
ERSETZE ihn mit:

Code: Alles auswählen

<a href="'.$url.'/viewtopic.php?p='.(int)$row['post_id'].'#'.(int)$row['post_id'].'"
und schon werdet ihr direkt zum Artikel geleitet.

Viel Spaß damit
cu Ralf

P.S. Ach in diesem Zusammenhang ist mir noch etwas aufgefallen und zwar werden mit dieser Methode leider jedoch nicht wirklich NUR die letzten 2 Beiträge dargestellt sondern die 2 letzten Beiträge in den letzten 2 UNTERSCHIEDLICHEN Themen :?
d.h. wenn jetzt in einem Thema die letzten 5 Nachrichten drin sind, wird NUR das letzte genommen und dann noch von einem anderen Thema. Ich vermute das liegt an der Datenbankabfrage, doch leider bin ich hier nicht so fit es zu ändern. Aber ich schaue mal nach ob ich evtl. direkt bei phpbb etwas dazu finde?!!
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Nur der Vollstaendigkeit halber - Urspruenglich stammt der Code von Markus :-) - also ist ihm auch zu danken...

Balu
Ralf
ConPresso-Checker
Beiträge: 205
Registriert: 25.08.2005 10:58
Hat sich bedankt: 65 Mal
Danksagung erhalten: 14 Mal

Beitrag von Ralf »

8) :lol:

DANKE Markus !!!!!
Antworten