FluxBB.fr

Le site des utilisateurs francophones de FluxBB.

Recherche rapide

FluxBB MiniPortal

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.

  1. Ajouter une page d'accueil
  2. Ajouter une colonne de menu
  3. Blocs additionnels
    1. Bloc “En Ligne”
  4. Ajouter une page

1. Ajouter une page d'accueil

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.

  • Renommez index.php en forum.php
  • Faites un copier/coller du texte suivant dans un fichier que vous nommerez index.php et envoyez le à la racine de votre forum :
<?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';

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 forum.php au menu, dans functions.php

  • [TROUVER] (ligne ):
$links[] = '<li id="navindex"><a href="index.php">'.$lang_common['Index'].'</a>';
  • [APRES, AJOUTER]
$links[] = '<li id="navforum"><a href="forum.php">'.$lang_common['Forum'].'</a>';

Pour remplacer les liens vers l'index des forums, dans viewforum.php, viewtopic.php et header.php

  • [CHERCHER]
index.php
  • [REMPLACER PAR]
forum.php

(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 :-)

2. Ajouter une colonne de menu

Pour ajouter une colonne de menu au forum, vous n'avez pas besoin d'avoir ajouter une page d'accueil

  • Faites un copier/coller du texte suivant pour remplacer le contenu du fichier main.tpl :
<!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">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>
 
</body>
</html>

Dans header.php

  • [TROUVER]
// START SUBST - <pun_navlinks>
$tpl_main = str_replace('<pun_navlinks>','<div id="brdmenu" class="inbox">'."nttt". generate_navlinks()."ntt".'</div>', $tpl_main);
// END SUBST - <pun_navlinks>
  • [APRES, AJOUTER]
// START SUBST - <pun_sidelinks>
$tpl_main = str_replace('<pun_sidelinks>','<div class="inbox">'."nttt". generate_navlinks()."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.

3. Blocs additionnels

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.)

I - Bloc "En ligne"

Dans header.php

  • [TROUVER]
// START SUBST - <pun_sidelinks>
$tpl_main = str_replace('<pun_sidelinks>','<div class="inbox">'."nttt". generate_navlinks()."ntt".'</div>', $tpl_main);
// END SUBST - <pun_sidelinks>
  • [APRES, AJOUTER]
// 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

  • [AJOUTER, A LA FIN]
//
// 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(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[] = "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".$lang_index['Users online'].': <strong>'.$num_users.'</strong><br />'."ntttt".$lang_index['Guests online'].': <strong>'.$num_guests.'</strong>'."nttt"."n";
 
 
            if ($num_users > 0 && $num_users < 10)
                $online[] = "ttt"."ntttt".'<br /><strong>'.$lang_index['Online'].':&nbsp;</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

  • [CHERCHER] (le code que vous avez collé avant)
<div id="left">
.....
</div>
  • [APRES, AJOUTER]
<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 {
        width: 140px;
        float: left;
    }
    #main {
        margin-left: 150px;
    }
    #container {
        width: 100%;
        float: right;
        margin-left: -140px;
    }
</style>

Ce qui affichera :

Bienvenue Connorhd
 
Membres en ligne: 1
Invités en ligne: 0
 
En ligne: 
Connorhd
 
Membres: 1
Discutions: 3
Messagess: 3

4. Ajouter une page

Pour créer une nouvelle page, faites un copier/coller de ce qui suit dans un fichier que vous appelerez par exemple nouvelle_page.php et envoyez la à la racine de votre forum.

<?php
 
define('PUN_ROOT', './');
define('PUN_QUIET_VISIT', 1);
require PUN_ROOT.'include/common.php';
 
//Set the page title here
$page_title = 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';
 
fluxbb_1_2/mini_portail.txt · Dernière modification: 2010/11/22 13:57 par Spiky