Difficulties displaying post on external pages!
Posted: Thu Jun 03, 2010 1:17 pm
Hi, I am upgrading my forum from phpBB2 too phpBB3 and I was trying to find a way to display topics from a specific forum on my websites front page for phpBB3 since I am currently using a mod that allows me too do just that for phpBB2. I stumbled upon your tutorial guide which has been extremely helpful, but I'm running into a little problem.
Here is just a little information so you know how I have things setup. When you go too my websites homepage, the index.php files looks like this
the news.php file is what is extracting the topics from my phpbb3 forum onto my website too display as news.
The news.php looks like this
The problem I am having is that anything placed after the "page_footer();" is not loaded. For example, placing the "page_footer();" code at the bottom before the "?>" prevents only the include($_SERVER['DOCUMENT_ROOT'] . "/templates/site_footer.php"); command from the index.php too not load while placing the "page_footer();" near the top of the news.php file prevents the entire news / topic extraction to not be displayed.
I have noticed a previous topic discussing this issue. I have tried your solution for the problem which you gave in that topic with no luck. I understand that your time is very precious and any help you can give me is very much appreciated. Thank you for taking the time and reading my issue, I hope to hear back from you soon. In the mean time, I will continue to try and solve this problem.
Here is just a little information so you know how I have things setup. When you go too my websites homepage, the index.php files looks like this
Code: Select all
<?php
ob_start ("ob_gzhandler");
include($_SERVER['DOCUMENT_ROOT'] . "/templates/site_header.php");
include($_SERVER['DOCUMENT_ROOT'] . "/news.php");
include($_SERVER['DOCUMENT_ROOT'] . "/templates/site_footer.php");
?>
The news.php looks like this
Code: Select all
<?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 : './forums/';
$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(16);
$forum_id_where = create_where_clauses($forum_id, 'forum');
$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),
));
}
$template->set_filenames(array(
'body' => 'site_news.html'
));
page_footer();
?>
I have noticed a previous topic discussing this issue. I have tried your solution for the problem which you gave in that topic with no luck. I understand that your time is very precious and any help you can give me is very much appreciated. Thank you for taking the time and reading my issue, I hope to hear back from you soon. In the mean time, I will continue to try and solve this problem.