Modification créée à l'origine par Connorhd (MyPunBB.com) sur PunRes.
Cet add-on pour FluxBB est constitué de deux parties. La première consiste à ajouter une page d'accueil au forum, la deuxième à ajouter un menu à gauche de votre forum. Les deux peuvent fonctionner ensembles, mais vous pouvez aussi installer l'une sans installer les deux.
L'ajout d'une page d'accueil, qui consiste en un message d'accueil et une liste de messages récents récupérés depuis les forums de votre choix.
<?php dirname(__FILE__).'/'); define('PUN_QUIET_VISIT', 1); require PUN_ROOT.'include/common.php'; $page_title = array(pun_htmlspecialchars($pun_config['o_board_title'])); define('PUN_ALLOW_INDEX', 1); define('PUN_ACTIVE_PAGE', 'forums'); 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 = 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'].'&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';
Le bloc de bienvenue peut contenir ce que vous voulez, y compris du html. le générateur de news est :
pun_news(1, 5, 0)
La syntaxe est :
pun_news(id du forum, nombre de news à afficher, nombre de caractères après lequel on coupe la news);
Pour ajouter forums.php au menu, dans header.php
$links[] = '<li id="navindex"'.((PUN_ACTIVE_PAGE == 'index') ? ' class="isactive"' : '').'><a href="index.php">'.$lang_common['Index'].'</a></li>';
$links[] = '<li id="navindex"'.((PUN_ACTIVE_PAGE == 'forums') ? ' class="isactive"' : '').'><a href="forums.php">'.$lang_common['Forums'].'</a></li>';
Puis ouvrir common.php dans votre dossier de langue (le faire dans chaque dossier de langue installé)
'Index' => 'Index',
'Forums' => 'Forums',
Pour remplacer les liens vers l'index des forums, dans viewforum.php, viewtopic.php, post.php et edit.php
<li><a href="index.php"><?php echo $lang_common['Index'] ?></a></li>
<li><a href="forums.php"><?php echo $lang_common['Index'] ?></a></li>
(Vous devriez avoir à le faire deux fois dans les fichiers viewforum.php et viewtopic.php)
Vous avez maintenant une page d'accueil à votre site fluxbb
Pour ajouter une colonne de menu au forum, vous n'avez pas besoin d'avoir ajouter une page d'accueil
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<pun_language>" lang="<pun_language>" dir="<pun_content_direction>"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <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="pun<pun_page>" class="pun"> <div class="top-box"><div><!-- Top Corners --></div></div> <div class="punwrap"> <div id="brdheader" class="block"> <div class="box"> <div id="brdtitle" class="inbox"> <pun_title> <pun_desc> </div> <pun_status> </div> </div> <div id="container"> <div id="main"> <pun_announcement> <div id="brdmain"> <pun_main> </div> </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">Lien 1</a></li> <li><a href="index.php">Lien 2</a></li> <li><a href="index.php">Lien 3</a></li> <li><a href="index.php">Lien 4</a></li> </ul> </div> </div> </div> </div> <div class="clearer"></div> <pun_footer> </div> <div class="end-box"><div><!-- Bottom corners --></div></div> </div> </body> </html>
Dans header.php
$tpl_main = str_replace('<pun_navlinks>', $tpl_temp, $tpl_main); // END SUBST - <pun_navlinks>
// START SUBST - <pun_sidelinks> $tpl_main = implode("ntttt", $links)."nttt".'</ul>'."ntt".'</div>', $tpl_main); // END SUBST - <pun_sidelinks>
Celà ajoutera une colonne à gauche avec le menu de navigation et des liens additionnels que vous pouvez changer et supprimer.
Ces blocs sont ajoutés à la colonne de menu créée dans la deuxième partie. (La deuxième partie est requise pour installer ceci.)
Dans header.php
// START SUBST - <pun_sidelinks> $tpl_main = implode("ntttt", $links)."nttt".'</ul>'."ntt".'</div>', $tpl_main); // END SUBST - <pun_sidelinks>
// START SUBST - <pun_online> $tpl_main = str_replace('<pun_online>','<div class="inbox">'."nttt". generate_whosonline()."ntt".'</div>', $tpl_main); // END SUBST - <pun_online>
Dans functions.php
// // 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 'Bienvenue Invité !<br /> Veuillez vous identifier.<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>Nom d'utilisateur</strong><br /><input type="text" name="req_username" size="13" maxlength="25" tabindex="1" /><br /></label> <label><strong>Mot de passe</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="S'identifier" tabindex="3" /></p> </form>'; } else { require PUN_ROOT.'lang/'.$pun_user['language'].'/index.php'; $result = $db->query('SELECT 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[] = "ntttt".'<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[] = "tttt".'<dd><span>'.sprintf($lang_index['Users online'], '<strong>'.forum_number_format($num_users).'</strong>').'</span></dd>'."ntttt".'<dd><span>'.sprintf($lang_index['Guests online'], '<strong>'.forum_number_format($num_guests).'</strong>').'</span></dd>'."nttt".'</dl>'."n"; if ($num_users > 0 && $num_users < 10) $online[] = "ttt"."ntttt".'<br /><strong>'.$lang_index['Online'].': </strong>'."tttt".implode($users)."n"; else $online[] = "ttt".'<div class="clearer"></div>'."n"; } return 'Bienvenue <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 />'; } }
Dans main.tpl
<div id="left"> ..... </div>
<div class="block"> <h2 class="block2"><span>Qui est en ligne ?</span></h2> <div class="box"> <pun_online> </div> </div>
Vous Allez devoir remplacer le css au début de main.tpl par celui-ci :
<style type="text/css"> #left { border: 2px solid; float: left; padding: 10px; width: 170px; } #main { margin-left: 220px; } #container { width: 100%; float: right; margin-left: -200px; } #brdfooter.block { clear: both; margin-left: 220px; } </style>
Ce qui affichera :
Bienvenue Pseudo Membres en ligne: 1 Invités en ligne: 0 En ligne: Pseudo Membres: 1 Discutions: 3 Messagess: 3
Pour créer une nouvelle page, faites un copier/coller de ce qui suit dans un fichier que vous appellerez par exemple nouvelle_page.php et envoyez la à la racine de votre forum.
<?php dirname(__FILE__).'/'); define('PUN_QUIET_VISIT', 1); require PUN_ROOT.'include/common.php'; //Set the page title here $page_title = array (pun_htmlspecialchars($pun_config['o_board_title']) . ' / Nouvelle page 1'); define('PUN_ALLOW_INDEX', 1); require PUN_ROOT.'header.php'; require PUN_ROOT.'include/parser.php'; ?> <div class="block"> <h2><span>Box 1</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 require PUN_ROOT.'footer.php';