Seite 1 von 1
Letzte Beiträge in HTML Seite einbinden
Verfasst: 10.05.2013 22:31
von Marc_Kcan
Hallo,
wie kann ich die letzten Beiträge in meinem phpBB Forum (Version 3.0.11) in meine HTML Startseite einbinden? Die Seite liegt auf dem gleichen Server, das Forum im Verzeichnis /forum.
Danke!
Marc
Re: Letzte Beiträge in HTML Seite einbinden
Verfasst: 10.05.2013 23:03
von HabNurNeFrage
Hi,
in eine HTML-Seite direkt wohl nur mit iFrame(s).
Du brauchst dazu ja in etwa die Funktionen, die die search.php zur Verfügung stellt.
Wie es komplett "custom" ausehen müsste, steht hier:
https://blog.phpbb.com/2009/11/09/how-t ... nal-pages/
Eine umbenannte Kopie der search.php mit angepasster search_results.html würde sicher auch funktionieren.
Einfacher ist es, Seiten in phpBB zu integrieren, als phpBB-Funktionen in Seiten...
Wie das grundsätzlich geht, steht hier:
https://wiki.phpbb.com/Practical.Add_custom_page
Zum Testen/Begreifen eignet sich hervorragend eine umbenannte faq.php - weil die nur die grundlegendsten Dinge beinhaltet.
Viel Spaß beim Tüfteln...
LG
Re: Letzte Beiträge in HTML Seite einbinden
Verfasst: 11.05.2013 09:36
von Marc_Kcan
Ok ich habe nun zum Test im selben Verzeichnis wie mein Forum eine neue PHP Datei erstellt und den Code wie in diesem Blog beschrieben zusammenkopiert. Aber es funktioniert nicht, was mache ich falsch?
Code: Alles auswählen
<?php
/*
* home.php
* Description: example file for displaying latest posts and topics
* by battye (for phpBB.com MOD Team)
* September 29, 2009
*/
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('viewforum');
/* 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;
}
$search_limit = 5;
$forum_id = array(2, 5);
$forum_id_where = create_where_clauses($forum_id, 'forum');
$topic_id = array(20, 50);
$topic_id_where = create_where_clauses($topic_id, 'topic');
$posts_ary = array(
'SELECT' => 'p.*, t.*',
'FROM' => array(
POSTS_TABLE => 'p',
),
'LEFT_JOIN' => array(
array(
'FROM' => array(TOPICS_TABLE => 't'),
'ON' => 't.topic_first_post_id = p.post_id'
)
),
'WHERE' => str_replace( array('WHERE ', 'forum_id'), array('', 't.forum_id'), $forum_id_where) . '
AND t.topic_status <> ' . ITEM_MOVED . '
AND t.topic_approved = 1',
'ORDER_BY' => 'p.post_id DESC',
);
$posts = $db->sql_build_query('SELECT', $posts_ary);
$posts_result = $db->sql_query_limit($posts, $search_limit);
while ($posts_row = $db->sql_fetchrow($posts_result))
{
$topic_title = $posts_row['topic_title'];
$topic_author = get_username_string('full', $posts_row['topic_poster'], $posts_row['topic_first_poster_name'], $posts_row['topic_first_poster_colour']);
$topic_date = $user->format_date($posts_row['topic_time']);
$topic_link = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "t=" . $posts_row['topic_id']);
$post_text = nl2br($posts_row['post_text']);
$bbcode = new bbcode(base64_encode($bbcode_bitfield));
$bbcode->bbcode_second_pass($post_text, $posts_row['bbcode_uid'], $posts_row['bbcode_bitfield']);
$post_text = smiley_text($post_text);
$template->assign_block_vars('announcements', array(
'TOPIC_TITLE' => censor_text($topic_title),
'TOPIC_AUTHOR' => $topic_author,
'TOPIC_DATE' => $topic_date,
'TOPIC_LINK' => $topic_link,
'POST_TEXT' => censor_text($post_text),
));
}
Re: Letzte Beiträge in HTML Seite einbinden
Verfasst: 11.05.2013 10:25
von Crizzo
Re: Letzte Beiträge in HTML Seite einbinden
Verfasst: 11.05.2013 10:54
von Kirk
Du könntest dir die letzten Beiträge auch in der Forenübersicht anzeigen lassen.
Dazu gibt es den Mod
Latest Post on Index