Hallo liebes Forum,
ich weiß, dieses Thema gab es schon sehr oft hier im Forum, aber nicht ganz so wie ich mir das so dachte.
Ich habe bereits eine menge (3 Stunden) auf Deutsch und Englisch gegooglet, aber leider noch nichts gefunden. Ich möchte nämlich die letzten eröffneten Topics aus dem Forum auf meiner Homepage anzeigen. Das wäre ja alles kein Problem, aber es werden ja auch Topics aus internen Bereichen angezeigt, der User kann sie zwar nicht lesen aber trotzdem.
Ich könnte zwar alle erlaubten Foren-IDs auflisten und dann das Query so absenden, aber wenn ich ein neues Forum aufmache, muss ich dort erst die ID eintragen.
Ich habe schon einige Zeit in die Datenbanktabellen von phpBB geschaut, finde aber nicht die Verknüfungen zwischen der Tabelle topics, foums, acl_roles, und groups. Die Verbindung zwischen topics und forums ist ja nicht zu übersehen, aber ich finde nicht herraus, welche Foren der User anonymous lesen darf. Wenn ich das wüsste müsste ich nur noch ein Query schreiben.
mfg
Philip
Letzten Topics im Forum anzeigen
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
-
- Mitglied
- Beiträge: 3
- Registriert: 20.12.2010 09:03
-
- Mitglied
- Beiträge: 3
- Registriert: 20.12.2010 09:03
Re: Letzten Topics im Forum anzeigen
Hallo,
ich war leider gestern abwesend, deswegen melde ich mich erst heute.
Auf den ersten Blick sieht das Beispiel super aus, abr auf den zweiten Blick erkennt man, wie in Kommentar 1 beschrieben, das durch diesen "Mod" auch Topics aus Foren angezeigt werden, auf die der User keine Rechte hat.
Ich habe ein eigenes Adminforum, worauf natürlich nichteingeloggte User (ANONYMOUS) keinen Zugriff drauf haben. Durch den "Mod" werden Topics dann aber trotzdem aus dem Forum angezeit, und das ist das Problem an dem "Mod".
Vielleich weiß jemand ncoh Rat, sonst muss ich das wohl so machen das ich die Foren-IDs aufliste, aus denen Topcis angezeigt werden dürfen.
Gruß
Philip
ich war leider gestern abwesend, deswegen melde ich mich erst heute.
Auf den ersten Blick sieht das Beispiel super aus, abr auf den zweiten Blick erkennt man, wie in Kommentar 1 beschrieben, das durch diesen "Mod" auch Topics aus Foren angezeigt werden, auf die der User keine Rechte hat.
Ich habe ein eigenes Adminforum, worauf natürlich nichteingeloggte User (ANONYMOUS) keinen Zugriff drauf haben. Durch den "Mod" werden Topics dann aber trotzdem aus dem Forum angezeit, und das ist das Problem an dem "Mod".
Vielleich weiß jemand ncoh Rat, sonst muss ich das wohl so machen das ich die Foren-IDs aufliste, aus denen Topcis angezeigt werden dürfen.
Gruß
Philip
- Unimatrix_0
- Mitglied
- Beiträge: 392
- Registriert: 03.11.2007 10:50
- Kontaktdaten:
Re: Letzten Topics im Forum anzeigen
versuchs mit http://blog.phpbb.com/2009/11/09/how-to ... nal-pages/
da gibt es den Punkt: The latest topics (including only from specified forums)
da gibt es den Punkt: The latest topics (including only from specified forums)
-
- Mitglied
- Beiträge: 3
- Registriert: 20.12.2010 09:03
Re: Letzten Topics im Forum anzeigen
Super Danke,
habe daraus nun ein für mich funktionierendes Script gebastelt:
Ich verwende dazu noch den phpBB Seo Mod (http://www.phpbb-seo.com/) deswege kommt es am Ende bei der Ausgabe zu Unterschieden.
Ich hoffe das hiermit noch so der ein oder andere User etwas mit anfangen kann.
Edit: Ich sehe gerade, es gibt ja gar keinen PHP BB-Code, schade
Edit2: Nach einwenig rumprobiern/spielen merke ich, das man das ganze nicht per include laden kann. Man erhält immer folgende Fehlermeldung:
Er mag also, dass $result = $db->sql_query($sql); nicht, das mir gerade Kopfzerbrechen bereitet.
Gruß
Philip
habe daraus nun ein für mich funktionierendes Script gebastelt:
Code: Alles auswählen
<?php
/*
* home.php
* Description: example file for displaying latest posts and topics
* by battye (for phpBB.com MOD Team)
* modded by http://FlaverSaver.de 23.12.2010
* September 29, 2009
*/
define('IN_PHPBB', true);
$phpbb_root_path = 'forum/'; //relative Pfadangabe zum Forenverzeichis, muss mit / enden.
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
$anzahl = 5; //Die Anzahl der letzen Topics, die angezeigt werden sollen.
// Start session management
$user->session_begin();
$auth->acl($user->data);
/* create_where_clauses( int[] gen_id, String type )
* This function outputs an SQL WHERE statement for use when grabbing
* posts and topics */
function create_where_clauses($gen_id, $type)
{
global $db, $auth;
$size_gen_id = sizeof($gen_id);
switch($type)
{
case 'forum':
$type = 'forum_id';
break;
case 'topic':
$type = 'topic_id';
break;
default:
trigger_error('No type defined');
}
// Set $out_where to nothing, this will be used of the gen_id
// size is empty, in other words "grab from anywhere" with
// no restrictions
$out_where = '';
if( $size_gen_id > 0 )
{
// Get a list of all forums the user has permissions to read
$auth_f_read = array_keys($auth->acl_getf('f_read', true));
if( $type == 'topic_id' )
{
$sql = 'SELECT topic_id FROM ' . TOPICS_TABLE . '
WHERE ' . $db->sql_in_set('topic_id', $gen_id) . '
AND ' . $db->sql_in_set('forum_id', $auth_f_read);
$result = $db->sql_query($sql);
while( $row = $db->sql_fetchrow($result) )
{
// Create an array with all acceptable topic ids
$topic_id_list[] = $row['topic_id'];
}
unset($gen_id);
$gen_id = $topic_id_list;
$size_gen_id = sizeof($gen_id);
}
$j = 0;
for( $i = 0; $i < $size_gen_id; $i++ )
{
$id_check = (int) $gen_id[$i];
// If the type is topic, all checks have been made and the query can start to be built
if( $type == 'topic_id' )
{
$out_where .= ($j == 0) ? 'WHERE ' . $type . ' = ' . $id_check . ' ' : 'OR ' . $type . ' = ' . $id_check . ' ';
}
// If the type is forum, do the check to make sure the user has read permissions
else if( $type == 'forum_id' && $auth->acl_get('f_read', $id_check) )
{
$out_where .= ($j == 0) ? 'WHERE ' . $type . ' = ' . $id_check . ' ' : 'OR ' . $type . ' = ' . $id_check . ' ';
}
$j++;
}
}
if( $out_where == '' && $size_gen_id > 0 )
{
trigger_error('A list of topics/forums has not been created');
}
return $out_where;
}
$sql = 'select topic_title, concat(topic_url, topic_id, ".html") as url from '.$table_prefix.'topics '.trim(create_where_clauses(array_keys($auth->acl_getf('f_read', true)), 'forum')).' order by topic_time desc limit '.$anzahl;
$result = mysql_query($sql);
while($row = mysql_fetch_object($result)) {
echo '<a href="'.$phpbb_root_path.$row->url.'">'.$row->topic_title.'</a><br/>';
}
?>
Ich hoffe das hiermit noch so der ein oder andere User etwas mit anfangen kann.
Edit: Ich sehe gerade, es gibt ja gar keinen PHP BB-Code, schade

Edit2: Nach einwenig rumprobiern/spielen merke ich, das man das ganze nicht per include laden kann. Man erhält immer folgende Fehlermeldung:
Code: Alles auswählen
Fatal error: Call to a member function sql_query() on a non-object in /*/forum/includes/cache.php on line 52
Gruß
Philip
- Frank1604
- Ehemaliges Teammitglied
- Beiträge: 2106
- Registriert: 07.11.2007 09:25
- Wohnort: Einhausen
- Kontaktdaten:
Re: Letzten Topics im Forum anzeigen
Setze mal ein nach dem
Code: Alles auswählen
$user->setup();
Code: Alles auswählen
// Start session management
$user->session_begin();
$auth->acl($user->data);
Gruß, Frank
Meine Meinung steht fest. Bitte verwirrt mich nicht mit Tatsachen!
Meine Meinung steht fest. Bitte verwirrt mich nicht mit Tatsachen!