Jul 26, 2008

Punbb Miniportal

Free Web Hosting, No Ads > CONTRIBUTE > The Internet > Website Discussion

free web hosting

Punbb Miniportal

Raptrex
i just installed this miniportal on my forum
My Webpage showing the miniportal with punbb

very easy to do just edit a few pages

1) Install punbb
2) Rename the index.php to forum.php
3) Create a new index.php
CODE
<?php

define('PUN_ROOT', './');
define('PUN_QUIET_VISIT', 1);
require PUN_ROOT.'include/common.php';

$page_title = pun_htmlspecialchars($pun_config['o_board_title']);
define('PUN_ALLOW_INDEX', 1);
require PUN_ROOT.'header.php';
require PUN_ROOT.'include/parser.php';

function pun_news($fid='', $show=15, $truncate=1)
{
   global $lang_common, $db, $pun_config, $db_prefix;
   $max_subject_length = 30;
   $show_max_topics = 50;
   $fid = intval($fid);
   $order_by = 't.posted';
   $forum_sql = '';
   // Was a forum ID supplied?
   if ( $fid ) $forum_sql = 'f.id='.$fid.' AND ';
   $show = intval($show);
   if ($show < 1 || $show > $show_max_topics)
   $show = 15;
   $saveddate="";
   // Fetch $show topics
   $result = $db->query('SELECT t.id, t.poster, t.subject, t.posted, t.last_post, f.id AS fid, f.forum_name FROM '.$db_prefix.'topics AS t INNER JOIN '.$db_prefix.'forums AS f ON t.forum_id=f.id WHERE f.id='.$fid.' AND t.moved_to IS NULL ORDER BY '.$order_by.' DESC') or error('Unable to fetch topic list', __FILE__, __LINE__, $db->error());
   $show_count = 0;
   if ( !$db->num_rows($result) ) return $output;
   while ( ($show_count < $show) && ($cur_topic = $db->fetch_assoc($result)) ) {
       $temp = '';
       if ($pun_config['o_censoring'] == '1')
           $cur_topic['subject'] = censor_words($cur_topic['subject']);
       if (pun_strlen($cur_topic['subject']) > $max_subject_length)
           $subject_truncated = trim(substr($cur_topic['subject'], 0, ($max_subject_length-5))).' ...';
       else
           $subject_truncated = $cur_topic['subject'];
       $newsheading = '<a href="'.$pun_config['o_base_url'].'/viewtopic.php?id='.$cur_topic['id'].'&amp;action=new" title="'.pun_htmlspecialchars($cur_topic['subject']).'">'.pun_htmlspecialchars($subject_truncated).'</a> - <em>Posted by '.$cur_topic['poster'].' at '.date('h:i A', $cur_topic['posted']).'</em><br>';
       // Group posts by date    
       $thisdate = date('l, d F Y', $cur_topic['posted']);
       if ($thisdate != $saveddate)
       {
           if ($saveddate)
           {
               $temp .= "</div></div>";
           }
           $temp .= '<div class="block"><h2><span>'.$thisdate.'</span></h2><div class="box"><div class="inbox"><p>';
           $saveddate = $thisdate;
       }
       else {
           $temp .= '<div class="inbox"><p>';
       }
       $temp .= $newsheading.'</p><p>';
       $id = $cur_topic['id'];
       $msg = $db->query('SELECT id, poster, poster_id, poster_ip, poster_email, message, posted, edited, edited_by FROM '.$db_prefix.'posts WHERE topic_id='.$id.' LIMIT 1') or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());
           if ( !$db->num_rows($msg) ) continue;
       $cur_post = $db->fetch_assoc($msg);
       // Display first paragraph only (comment out next four lines to turn off)
       if ($truncate == 1)
       {
       $paragraph = preg_split("/\s*\n+/", $cur_post['message']);
           if (isset($paragraph[1])) {
               $cur_post['message'] = $paragraph[0] . "...";
           }
       }
       $cur_post['message'] = parse_message($cur_post['message'], 0);
       $temp .= $cur_post['message'];
       $temp .= "</p></div>";
       if (isset($output)) {
           $output .= $temp;
       }
       else {
           $output = $temp;
       }
       ++$show_count;
   } // end of while
   $output .= "</div></div>";
   return $output;
}
?>
       <div class="block">
           <h2><span>Welcome</span></h2>
           <div class="box">
               <div class="inbox">
                   <p>
                   Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent augue. Nulla facilisi. Fusce bibendum accumsan erat. Quisque sollicitudin mattis neque. Sed dapibus. Integer a lectus eu sem consequat pellentesque. Morbi rhoncus nulla. Duis adipiscing interdum velit. Fusce ante. Ut vitae enim sit amet magna sodales hendrerit. In sed tortor at sapien convallis eleifend. Proin mauris. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Ut metus. Cras ac arcu et arcu porttitor blandit. Nam vitae lectus eget mauris sollicitudin placerat. Suspendisse vestibulum. Donec varius libero. Duis velit tellus, euismod vitae, consequat sed, consectetuer ut, purus.
                   </p>
                   <p>
                   Praesent viverra venenatis magna. Etiam in dolor. Ut in justo ac nibh malesuada cursus. Duis urna arcu, aliquam vitae, consequat nec, tincidunt non, mi. Nunc lobortis. Nunc pharetra. Sed porttitor. Maecenas turpis tortor, blandit nec, dignissim in, porttitor eu, odio. In hac habitasse platea dictumst. Suspendisse augue odio, ornare a, elementum ac, tincidunt varius, orci. Nulla libero ante, hendrerit ac, consectetuer eu, sollicitudin et, eros. Duis sapien. Suspendisse ornare enim sit amet dui. Donec ullamcorper diam.
                   </p>
               </div>
           </div>
       </div>
<?php
echo pun_news(1, 5, 0);

require PUN_ROOT.'footer.php';


put what you want in the welcome block, pun_news(1, 5, 0); is the news generator the syntax is pun_news(forum id, number of news to display, truncate news);

4) Add forums.php to the menu: open functions.php find (line 235):

continues in next post:

 

 

 


Reply

Raptrex
CODE
$links[] = '<li id="navindex"><a href="index.php">'.$lang_common['Index'].'</a>';


after this add

CODE
$links[] = '<li id="navforum"><a href="forum.php">'.$lang_common['Forum'].'</a>';


5) Add a sidebar: replace main.tpl with

CODE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html dir="<pun_content_direction>">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<pun_char_encoding>" />
<pun_head>
<style type="text/css">
   #left {
       width: 120px;
       float: left;
   }
   #main {
       margin-left: 130px;
   }
   #container {
       width: 100%;
       float: right;
       margin-left: -120px;
   }
</style>
</head>
<body>

<div id="punwrap">
<div id="pun<pun_page>" class="pun">

<div id="brdheader" class="block">
   <div class="box">
       <div id="brdtitle" class="inbox">
           <pun_title>
           <pun_desc>
       </div>
       <pun_navlinks>
       <pun_status>
   </div>
</div>

<div id="container">
   <div id="main">
   
       <pun_announcement>
   
       <pun_main>
       
   </div>    
</div>

<div id="left">    
   <div class="block">
       <h2><span>Menu</span></h2>
       <div class="box">
       <pun_sidelinks>            
       </div>
   </div>
   <div class="block">
       <h2 class="block2"><span>More Links</span></h2>
       <div class="box">
           <div class="inbox">
               <ul>
                   <li><a href="index.php">Link 1</a></li>
                   <li><a href="index.php">Link 2</a></li>
                   <li><a href="index.php">Link 3</a></li>
                   <li><a href="index.php">Link 4</a></li>
               </ul>        
           </div>
       </div>
   </div>
</div>

<div class="clearer"></div>

<pun_footer>

</div>
</div>

</body>
</html>


6) open header.php find
CODE
// START SUBST - <pun_navlinks>
$tpl_main = str_replace('<pun_navlinks>','<div id="brdmenu" class="inbox">'."\n\t\t\t". generate_navlinks()."\n\t\t".'</div>', $tpl_main);
// END SUBST - <pun_navlinks>


after add

CODE
// START SUBST - <pun_sidelinks>
$tpl_main = str_replace('<pun_sidelinks>','<div class="inbox">'."\n\t\t\t". generate_navlinks()."\n\t\t".'</div>', $tpl_main);
// END SUBST - <pun_sidelinks>


contiues to 3rd post

 

 

 


Reply

Raptrex
7) Whos Online: add this to functions.php (the end is fine)
CODE
//
// Generate the whos online block
//
function generate_whosonline()
{
   global $pun_config, $lang_common, $pun_user, $db;
   
   if ($pun_user['is_guest'])
   {
       require PUN_ROOT.'lang/'.$pun_user['language'].'/login.php';
       return 'Welcome Guest!<br />
           Please login.<br />
           <form id="login" method="post" action="login.php?action=in" onsubmit="return process_form(this)">
               <input type="hidden" name="form_sent" value="1" />
               <input type="hidden" name="redirect_url" value="index.php" />
               <label><strong>Username</strong><br /><input type="text" name="req_username" size="13" maxlength="25" tabindex="1" /><br /></label>
               <label><strong>Password</strong><br /><input type="password" name="req_password" size="13" maxlength="16" tabindex="2" /><br /></label>
               <p><a href="register.php" tabindex="4">'.$lang_login['Not registered'].'</a><br />
               <a href="login.php?action=forget" tabindex="5">'.$lang_login['Forgotten pass'].'</a></p>
               <p><input type="submit" name="login" value="Login" tabindex="3" /></p>
           </form>';
   }
   else
   {
       require PUN_ROOT.'lang/'.$pun_user['language'].'/index.php';
       $result = $db->query('SELECT COUNT(id)-1 FROM '.$db->prefix.'users') or error('Unable to fetch total user count', __FILE__, __LINE__, $db->error());
       $stats['total_users'] = $db->result($result);
       
       $result = $db->query('SELECT id, username FROM '.$db->prefix.'users ORDER BY registered DESC LIMIT 1') or error('Unable to fetch newest registered user', __FILE__, __LINE__, $db->error());
       $stats['last_user'] = $db->fetch_assoc($result);
       
       $result = $db->query('SELECT SUM(num_topics), SUM(num_posts) FROM '.$db->prefix.'forums') or error('Unable to fetch topic/post count', __FILE__, __LINE__, $db->error());
       list($stats['total_topics'], $stats['total_posts']) = $db->fetch_row($result);
       
       if ($pun_config['o_users_online'] == '1')
       {
           // Fetch users online info and generate strings for output
           $num_guests = 0;
           $users = array();
           $online = array();
           $result = $db->query('SELECT user_id, ident FROM '.$db->prefix.'online WHERE idle=0 ORDER BY ident', true) or error('Unable to fetch online list', __FILE__, __LINE__, $db->error());
       
           while ($pun_user_online = $db->fetch_assoc($result))
           {
               if ($pun_user_online['user_id'] > 1)
                   $users[] = "\n\t\t\t\t".'<a href="profile.php?id='.$pun_user_online['user_id'].'">'.pun_htmlspecialchars($pun_user_online['ident']).'</a><br />';
               else
                   ++$num_guests;
           }
       
           $num_users = count($users);
           $online[] = "\t\t\t\t".$lang_index['Users online'].': <strong>'.$num_users.'</strong><br />'."\n\t\t\t\t".$lang_index['Guests online'].': <strong>'.$num_guests.'</strong>'."\n\t\t\t"."\n";
       
       
           if ($num_users > 0 && $num_users < 10)
               $online[] = "\t\t\t"."\n\t\t\t\t".'<strong>'.$lang_index['Online'].':&nbsp;</strong>'."\t\t\t\t".implode($users)."\n";
           else
               $online[] = "\t\t\t".'<div class="clearer"></div>'."\n";
       
       }
       
       return 'Welcome <strong>'.$pun_user['username'].'</strong><br /><br />
           '.implode($online,'').'<br />
           Users: <strong>'. $stats['total_users'].'</strong><br />
           Topics: <strong>'.$stats['total_topics'].'</strong><br />
           Posts: <strong>'.$stats['total_posts'].'</strong><br />';
   }
}


8) open main.tpl and inside:
CODE
<div id="left">    
.....
</div>


put this inside the <div> tags
CODE
<div class="block">
       <h2 class="block2"><span>Whos Online?</span></h2>
       <div class="box">
       <pun_online>
       </div>
</div>


9) adjust the width of the tables in main.tpl with this
CODE
<style type="text/css">
   #left {
       width: 140px;
       float: left;
   }
   #main {
       margin-left: 150px;
   }
   #container {
       width: 100%;
       float: right;
       margin-left: -140px;
   }
</style>


and it should all create something like this
My Webpage with the miniportal
works with all version of punbb
make sure its in the same directory as your forum
have fun

Reply

badinfluence
nice, cute and fast! smile.gif
perhaps, this should be a walkthrough guide about PunBB miniportal integration.

you can also have some original resource at punbb miniportal by Connorhd and earlier version. another good resource site for punbb is punres dot org. smile.gif

pls try to maintain credit accordingly and your post is very good for those starter because we can see the demo site(your site). thks smile.gif

Reply

Raptrex
yes the credit goes to my buddy connor
hes so nice and helpful

and im glad you like it cuz i do
im going to be adding more stuff later

but it sucks that theres not many mods for punbb

Reply



Got an Opinion! Express your Views! (no registration):-
Add your Reply/ Opinion/ Views/ Comments/ Suggestion/ Questions/ Queries etc.
Posts with decent grammar & English will be accepted and please refrain from profanities.
For asking a Question, We recommend you to sign-up (for free) so that you can track the topic easily.

Nature of your Post*: Opinion/ Reply/ Comments
Question/Query
Feedback to us.
       
Name   Email
Title/Question*

(Maximum characters: 10,000)
You have characters left.
Confirm Code:

Similar Topics

Keywords : punbb miniportal


    Looking for punbb, miniportal

Searching Video's for punbb, miniportal
advertisement



Punbb Miniportal



 

 

 

 

ADD REPLY / Got an Opinion! Remove these ADs! RAPID SEARCH! Free Web Hosting [X]
Express your Opinions, Thoughts or Contribute more info. to help others.
Ask your Doubts & Queries to get answers, So that "Together We can help others!"
Register FREE for AD-FREE forum, Create your own topics, Ask Questions, track topics, setup subscriptions & notifications and Get a Free Website w/ Email and FTP.
500MB Space *No Ads*, CPanel, FTP, PHP, MySQL, EMails - 100% FREE