phpbb aktuelle Beiträge / Users Online

Wie verwendet man Templates oder erstellt Navigationen und passt diese an.

phpbb aktuelle Beiträge / Users Online

Beitragvon gfc » 29. Dez 2006, 19:18

Viel wurde nachgefragt über eine Interaktion zwischen phbbb und redaxo. Ich habe dies auf www.parkrocker.net so geführt, dass im Redaxo die aktuellen Beiträge und die aktuellen online user von Forum ausgelesen werden und als Liste ausgegeben werden. Dies passiert über die DB Klasse von Redaxo, daher relativ flott (keine neue DB Verbindung).

Dieser Thread sollte für die grundlegende Anleitung und allenfalls Fragen dienen. Und vielleicht als Anregungen für weitere Interaktion, vieles ist möglich..

Zu finden ist es hier:

http://www.redaxo.de/168-Templatedetail ... late_id=40


EINSATZ
======

Erstellt wie gewohnt ein neues Template. Dieses muss im Haupttemplate - wie gewohnt - includiert werden

Aufgerufen kann das ganze dann via
<?php print $navLeftCol; ?>
werden

PARAMETER
=======

Im Template selbst müssen einige Parameter angegeben werden:

$topic_length = '60';
Gibt die Anzahl Zeichen an, die ein Titel max. haben kann

$topic_limit = '6';
Gibt die Anzahl Beiträge an, die Ausgelesen werden

$special_forums = '0';
Normalerweise werden NUR Foren aufgerufen, wo ein Normaler User Lese Rechte hat. Zusätzlich können die Foren eingeschränkt werden. Dazu den Wert 1 eintragen. Normalerweise die Einstellung behalten, wie sie ist!

$forum_ids = '';
Falls man die Foren beschränkt hat, hier die Foren angeben, die man auslesen möchte, getrennt mit Kommas. Z.b. '1,2,4,12'

$table_prefix = 'phpbb_';
Der Prefix des phpbb in der Datenbank. Standardmässig 'phpbb_' , Orion-User haben z.B. 'orion_'

$root_path = '/../../../../forums/'; // link zum Forumspfad
Pfad zum Forum. Hier ist ein wenig "tüfteln" angesagt!


So, das wars fürs erste
http://www.parkrocker.net/ - Die Rock im Park Community
Benutzeravatar
gfc
 
Beiträge: 153
Registriert: 27. Dez 2005, 21:46

Beitragvon Maidenaustria » 25. Jan 2007, 14:10

Ich hab's geschafft!
Hab dein Template am laufen!
Vielen Dank für die Arbeit!

Nur ein kleiner Hinweis:
Dein Template aus dem Downloadbereich einfach herauskopiert und in das eigene Redaxo einfügt, sollte man aus dem Kopfbereich des templates deine Erklärung rauslöschen denn

// Im Haupttemplate normal includieren und an gewünschter Stelle
// via <?php print $navLeftCol; ?> aufrufen!


wird dann sofort ausgeführt ;)

(Zumindest bei mir)
Maidenaustria
 
Beiträge: 254
Registriert: 7. Mär 2006, 09:43
Wohnort: Österreich

Beitragvon gfc » 28. Jan 2007, 23:25

echt? bei mir gehts samt kommentaren. Lustig :)

Aber danke fürs Lob.
http://www.parkrocker.net/ - Die Rock im Park Community
Benutzeravatar
gfc
 
Beiträge: 153
Registriert: 27. Dez 2005, 21:46

Beitragvon Maidenaustria » 30. Jan 2007, 12:31

Liegt viell. daran das ich noch mit Redaxo 3.1 arbeite....

...egal...
Maidenaustria
 
Beiträge: 254
Registriert: 7. Mär 2006, 09:43
Wohnort: Österreich

Beitragvon Dr KillerJoe » 30. Jan 2007, 13:10

Mach doch einfach einen mehrzeiligen kommentar ;)

mfg
Flo
Die Doku und Wiki sind Deine Freunde!!!
Dr KillerJoe
 
Beiträge: 1729
Registriert: 24. Nov 2005, 21:29

Beitragvon borisb2 » 8. Feb 2007, 20:03

super template..

verstehe nur nicht ganz, warum Du "$navLeftCol;" als Ausgabe benutzt.
Ich lasse in Deinem template stattdessen eine Variable "$phpbbThreads" generieren .. die kann ich dann frei in meinem Haupt-template platzieren, während $navLeftCol; weiterhin nur für die navigation benutzt wird..

gruß,
Boris
borisb2
 
Beiträge: 59
Registriert: 30. Jan 2007, 10:24
Wohnort: Frankfurt

Beitragvon Havard » 9. Feb 2007, 12:57

irgendwie wird bei mir gar nichts angezeigt.. kann mir mal jemand helfen? finde übrigens die variable von boris logischer ;)
Havard
 
Beiträge: 156
Registriert: 20. Jan 2005, 18:59

Beitragvon borisb2 » 9. Feb 2007, 14:22

Hast Du das include korrekt abgelegt und im template includiert?

Stimmt der Pfad im include ? ($root_path)
-> Du mußt ihn (jedenfalls bei mir war es so) relativ angeben.

gruß
borisb2
 
Beiträge: 59
Registriert: 30. Jan 2007, 10:24
Wohnort: Frankfurt

Beitragvon Havard » 9. Feb 2007, 14:28

habe ich alles geändert und schon zich varianten ausprobiert!
Havard
 
Beiträge: 156
Registriert: 20. Jan 2005, 18:59

Beitragvon gfc » 11. Feb 2007, 10:29

borisb2 hat geschrieben:super template..

verstehe nur nicht ganz, warum Du "$navLeftCol;" als Ausgabe benutzt.
Ich lasse in Deinem template stattdessen eine Variable "$phpbbThreads" generieren .. die kann ich dann frei in meinem Haupt-template platzieren, während $navLeftCol; weiterhin nur für die navigation benutzt wird..

gruß,
Boris


Hallo Boris

das hat mit meinem "eigentlichen" Template zu tun. Da hab ich die gesamte Navi in der navLeftCol, daher auch die Threads. Und ich habs nur daraus extrahiert. Aber es steht dir natürlich frei, die Variable umzubennen. Ich habe den Downloadbereich hier immer als "Gedankanregungen", nicht als fixfertige Lösungen gesehen :)
http://www.parkrocker.net/ - Die Rock im Park Community
Benutzeravatar
gfc
 
Beiträge: 153
Registriert: 27. Dez 2005, 21:46

Läuft nicht

Beitragvon Goldacker » 4. Jul 2007, 18:02

Hallo,
also ich bekomme das nicht zum laufen.

Ich habe das Forum unter /forum/ installiert. Läuft auch.
Hab das Modul angelegt:

Im Backend folgender Fehler:
Unable to open extension.inc. Feeling helpful? Send an email to the webmaster.

Was nun? Was ist falsch konfiguriert? Ist noch etwas mehr nötig als Modul und phpBB-Forum??

Edit: Modulcode entfernt, da nicht relevant (kills)
Goldacker
 
Beiträge: 148
Registriert: 1. Jul 2007, 12:27
Wohnort: Hamburg / Berlin / Neubrandenburg

Fehler ohne Forumbeiträge

Beitragvon Goldacker » 23. Okt 2007, 16:46

ich habe nun doch noch eine Lösung gefunden.
Außerdem stellte ich fest, dass es sein kann, dass eine Fehlermeldung erscheint, wenn keine Forumbeiträge im phpBB sind. Hierzu habe ich einfach ein if Schleife gebaut, die das Problem abfängt.

Mein vollständiges Template:

Code: Alles auswählen
<?php

// PHPBB Interaktion mit Redaxo
// Autor: Roman Urnaut
// www.parkrocker.net / www.urnaut.com

// EXPLODE PATH
$PATH = explode("|",$this->getValue("path").$this->getValue("article_id")."|");

// GET CURRENTS
$path1 = $PATH[1];
$path2 = $PATH[2];
$path3 = $PATH[3];


// ############         Edit below         ########################################
$topic_length = '60';        // laenge des Titels
$topic_limit = '2';        // Anzahl beitraege
$special_forums = '0';        // auf Foren beschraenken ('0' = no; '1' = yes)
$forum_ids = '';                // Falls auf Foren beschraenkt, dann hier die IDs angeben
$table_prefix = 'phpbb_'; // Der Prefix in der Datenbank
$root_path = '/forum/';                // link zum Forumspfad
// ############         Edit above         ########################################



// RECENT FORUM POSTS

$navLeftCol .='<h1>Aktuell im Forum</h1>';
$navLeftCol .='';



$where_forums = ( $special_forums == '0' ) ? '' : 't.forum_id IN ('. $forum_ids .') AND ';
$qry = "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 AND f.auth_view < 2
        ORDER BY t.topic_last_post_id DESC LIMIT $topic_limit";



$sql = new sql();
$sql->setQuery($qry);

$result = $sql->get_array($qry);

//falls kein Forumbeiträge (mehr) vorhanden sind
//von Jan-Goldacker.de

if ($result == null) {
        // ############## output ##############
        $navLeftCol .= 'Kein aktueller Eintrag';
        // ############## output ##############
}
else{

//hier gehts normal weiter mit abschließender Klammer

foreach($result as $line)
{
        $forum_id = $line['forum_id'];
        $forum_url = $root_path .'forum.html'. $forum_id;
        $topic_id = $line['topic_id'];
        $topic_url = $root_path .'ftopic.html'. $topic_id;

        $topic_title = ( strlen($line['topic_title']) < $topic_length ) ? $line['topic_title'] : substr(stripslashes($line['topic_title']), 0, $topic_length) .'...';

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

        $first_time = date('G:i', $line['topic_time']);
        $last_time = date('G:i', $line['post_time']);
        $last_author = ( $line['last_poster_id'] != '-1' ) ? $line['last_poster'] : ( ($line['last_poster_name'] != '' ) ? $line['last_poster_name'] : 'guest' );
        $last_url = '<a href="'. $root_path .'sutra.html'. $line['topic_last_post_id'] .'#'. $line['topic_last_post_id'] .'">&raquo; '. $topic_title .'</a>';

        // ############## output ##############
        $navLeftCol .= 'In <a href="'. $forum_url .'">&raquo; '. $line['forum_name'] .'</a><!-- um '.$last_time.'</span>--><br>'.$last_url .'<br>';
        // ############## output ##############
}


$navLeftCol .='';

//abschließende Klammer, wenn kein Beitrag
}

// USER ONLINE
/**

$navLeftCol .='<h1>Aktuell Online</h1>';
$navLeftCol .='<ul>';



$qry = "SELECT u.user_id, u.username, u.user_allow_viewonline, s.session_logged_in, s.session_time
        FROM ". $table_prefix . "users u, ". $table_prefix . "sessions s WHERE u.user_id = s.session_user_id
                AND s.session_time >= (".time()." - 300) ORDER by u.username ASC";

$sql = new sql();
$sql->setQuery($qry);

$result = $sql->get_array($qry);
$guests = 0;
$users = "";
foreach($result as $line)
{
        $username = $line['username'];
        $userid = $line['user_id'];
       if ($userid <0)
       {
        $guests++;
        }
        else
        {
        if ($users == "")
        {
        $users.= $username;
        }
        else
        {
        $users.= ', '. $username;
        }
        }


}

$navLeftCol .= '<li>'.$users.'</li><li>' . $guests. ' G&auml;ste</li>';

$navLeftCol .='</ul>';

**/

Goldacker
 
Beiträge: 148
Registriert: 1. Jul 2007, 12:27
Wohnort: Hamburg / Berlin / Neubrandenburg

für phpbb3

Beitragvon borisb2 » 23. Apr 2008, 13:24

Hallo Parkrocker :)

gibt es von dem Modul denn eine Version für phpbb3 ?

Oder kann man das selber anpassen?

Danke,
Boris
borisb2
 
Beiträge: 59
Registriert: 30. Jan 2007, 10:24
Wohnort: Frankfurt

Re: für phpbb3

Beitragvon Maidenaustria » 4. Mär 2009, 08:58

borisb2 hat geschrieben:Hallo Parkrocker :)

gibt es von dem Modul denn eine Version für phpbb3 ?

Oder kann man das selber anpassen?

Danke,
Boris


Weil ich grad eine Frage an gfc hab, die hier reinpasst und weil du vor Äonen gefragt hast -> Ich hab das Template unter 3.1 laufen ;)

Nun aber meine Frage:
Kann man dem Template beibringen, User die im Forum deren Online-status verbergen auch hier auszublenden?
Derzeit wird dies ignoriert und ALLE als ""momentan online" angezeigt..

Be(a)st regards,
MA
Maidenaustria
 
Beiträge: 254
Registriert: 7. Mär 2006, 09:43
Wohnort: Österreich

Beitragvon Maidenaustria » 23. Okt 2009, 14:00

Will keinen uralt-thread wiederbeleben, hatte nur gerade das Problem das PHP einen Fehler ausspuckte, weil keine User in dem Forum hinter redaxo online waren.
Goldacker's Einwand/Code ist sehr gut, hab ihn an die Userabfrage angepasst und sollte auch funktionieren:
Code: Alles auswählen
<?php

// PHPBB Interaktion mit Redaxo
// Autor: Roman Urnaut
// www.parkrocker.net / www.urnaut.com

// EXPLODE PATH
$PATH = explode("|",$this->getValue("path").$this->getValue("article_id")."|");

// GET CURRENTS
$path1 = $PATH[1];
$path2 = $PATH[2];
$path3 = $PATH[3];


// ############         Edit below         ########################################
$topic_length = '60';        // laenge des Titels
$topic_limit = '2';        // Anzahl beitraege
$special_forums = '0';        // auf Foren beschraenken ('0' = no; '1' = yes)
$forum_ids = '';                // Falls auf Foren beschraenkt, dann hier die IDs angeben
$table_prefix = 'phpbb_'; // Der Prefix in der Datenbank
$root_path = '/forum/';                // link zum Forumspfad
// ############         Edit above         ########################################



// RECENT FORUM POSTS

$navLeftCol .='<h1>Aktuell im Forum</h1>';
$navLeftCol .='';



$where_forums = ( $special_forums == '0' ) ? '' : 't.forum_id IN ('. $forum_ids .') AND ';
$qry = "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 AND f.auth_view < 2
        ORDER BY t.topic_last_post_id DESC LIMIT $topic_limit";



$sql = new sql();
$sql->setQuery($qry);

$result = $sql->get_array($qry);

//falls kein Forumbeiträge (mehr) vorhanden sind
//von Jan-Goldacker.de

if ($result == null) {
        // ############## output ##############
        $navLeftCol .= 'Kein aktueller Eintrag';
        // ############## output ##############
}
else{

//hier gehts normal weiter mit abschließender Klammer

foreach($result as $line)
{
        $forum_id = $line['forum_id'];
        $forum_url = $root_path .'forum.html'. $forum_id;
        $topic_id = $line['topic_id'];
        $topic_url = $root_path .'ftopic.html'. $topic_id;

        $topic_title = ( strlen($line['topic_title']) < $topic_length ) ? $line['topic_title'] : substr(stripslashes($line['topic_title']), 0, $topic_length) .'...';

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

        $first_time = date('G:i', $line['topic_time']);
        $last_time = date('G:i', $line['post_time']);
        $last_author = ( $line['last_poster_id'] != '-1' ) ? $line['last_poster'] : ( ($line['last_poster_name'] != '' ) ? $line['last_poster_name'] : 'guest' );
        $last_url = '<a href="'. $root_path .'sutra.html'. $line['topic_last_post_id'] .'#'. $line['topic_last_post_id'] .'">&raquo; '. $topic_title .'</a>';

        // ############## output ##############
        $navLeftCol .= 'In <a href="'. $forum_url .'">&raquo; '. $line['forum_name'] .'</a><!-- um '.$last_time.'</span>--><br>'.$last_url .'<br>';
        // ############## output ##############
}


$navLeftCol .='';

//abschließende Klammer, wenn kein Beitrag
}

// USER ONLINE
/**

$navLeftCol .='<h1>Aktuell Online</h1>';
$navLeftCol .='<ul>';



$qry = "SELECT u.user_id, u.username, u.user_allow_viewonline, s.session_logged_in, s.session_time
        FROM ". $table_prefix . "users u, ". $table_prefix . "sessions s WHERE u.user_id = s.session_user_id
                AND s.session_time >= (".time()." - 300) ORDER by u.username ASC";

$sql = new sql();
$sql->setQuery($qry);

$result = $sql->get_array($qry);
$guests = 0;
$users = "";

//falls auch nicht mal ein google-bot online ist
//von Jan-Goldacker.de adaptiert von Maidenaustria

if ($result == null) {
        // ############## output ##############
        $navLeftCol .= 'Kein User online';
        // ############## output ##############
}
else{

foreach($result as $line)
{
        $username = $line['username'];
        $userid = $line['user_id'];
       if ($userid <0)
       {
        $guests++;
        }
        else
        {
        if ($users == "")
        {
        $users.= $username;
        }
        else
        {
        $users.= ', '. $username;
        }
        }


}

$navLeftCol .= '<li>'.$users.'</li><li>' . $guests. ' G&auml;ste</li>';

$navLeftCol .='</ul>';

**/
//abschließende Klammer, wenn kein User online
}
Maidenaustria
 
Beiträge: 254
Registriert: 7. Mär 2006, 09:43
Wohnort: Österreich


Zurück zu Templates/Navigationen [R3]

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 0 Gäste