Welcome, you're not connected. ( Log in - Register )

Les commandes sont pour le moment fermées jusqu'à nouvel ordre, mais je peux assurer le support.

Merci de votre compréhension.


Requests are currently closed, but I can do some support.

Thanks for your understanding.




Important links - Liens importants

Règles - Rules | Présentez-vous - Introduce yourself | Problème d'inscription ? - Registration problem ?

Ishimaru-Design > Tutoriaux, ressources et support (fr) > FluxBB 1.4 > Tutoriels > [Astuce] Système de news sur votre site

RSS >  [Astuce] Système de news sur votre site, à partir de news d'un de vos forums
Ishimaru Chiaki #1 25/04/2012 - 01h31

Class : ID Admin
Posts : 1437
Registered on : 12/11/2007
Age : 28
Sex : Female

Offline Mail Www

Vous êtes en train de faire un site utilisant les sessions de votre forum FluxBB, et vous aimeriez bien afficher les 10 dernières news à partir d'une section de votre forum ?

Ce tutoriel va vous montrer à insérer ce module sur votre site.

Prérequis

Tout d'abord, vous devez absolument avoir inclus le fichier common.php du forum avant l'entête de votre site.  Pour cela, suivez cette page de documentatiion de FluxBB.fr.

Création de la page

Je ne m'étalerai pas sur la façon d'insérer, puisque ça va dépendre de votre façon d'organiser votre site.  Certains voudront afficher les news directement sur l'accueil, d'autres vont les mettre sur une page à part.  Ensuite, certains vont utiliser les variables GET pendant que d'autres préfèrent faire un fichier par page.  De plus, certains voudront utiliser des clés de langue si leur site est bilingue.

Dans ce cas-ci, on va faire comme si on fait un fichier dédié à la page des news et que le site est unilingue français.
Commençons d'abord par les constantes à définir :
// Module de news de Connectix Boards, adapté pour FluxBB 1.4
// Modifiez les deux lignes suivantes pour que cela corresponde à votre forum
define('PUN_NEWS',1); // ID du forum consacré aux nouvelles.  Changez-le pour correspondre à votre forum
define('NB_NEWS',5); // Nombre de news à afficher


C'est ici que vous allez définir l'ID du forum où vous voulez poster les news.  Normalement, vous avez l'ID en regardant l'URL du forum en question qui doit être dans cette forme, si non réécrite :
http://monsite.com/forum/viewforum.php?id=1

J'ai mis 1 comme exemple, mais ça peut être un autre chiffre.  C'est cette valeur que vous devez mettre pour la constante PUN_NEWS.

Ensuite, dans la deuxième constante, vous devez définir le nombre de news à afficher.  Dans l'exemple, j'ai mis 5, mais vous pouvez très bien décider d'en afficher 10.

Une fois vos valeurs de constantes définies, passons au reste :

// Récupération des ids des messages à afficher
$query = $db->query('SELECT first_post_id FROM '.$db->prefix.'topics WHERE forum_id='.PUN_NEWS.' GROUP BY id ORDER BY first_post_id DESC LIMIT 0,'.NB_NEWS);
$ids = array();
if($db->num_rows($query) > 0)
{
   while($result = $db->fetch_assoc($query))
       $ids[] = $result['first_post_id'];

   // Récupération des données des messages sélectionnés
   $result2 = $db->query('SELECT p.id AS msg_id, p.message AS msg_text, p.posted AS msg_posted, p.topic_id AS msg_topic, p.hide_smilies AS msg_smilies, t.id AS topic_id, t.subject AS topic_subject, t.num_replies AS topic_replies, t.poster AS topic_poster, u.id AS user_id, u.username AS user_name FROM '.$db->prefix.'posts AS p LEFT JOIN '.$db->prefix.'topics AS t ON t.id=p.topic_id LEFT JOIN '.$db->prefix.'users AS u ON t.poster=u.id WHERE p.id IN ('.implode(',',$ids).') ORDER BY p.id DESC');
   if($db->num_rows($result2) > 0)
   {
       //Inclusion du parseur pour les BBCodes et smilies
       require PUN_ROOT.'include/parser.php';
       // Affichage des résultats
       while ($val = $db->fetch_assoc($result2))
       {
           $username = ($val['user_id'] > 1) ? '<a href="'.PUN_ROOT.'profile.php?id='.$val['user_id'].'">'.pun_htmlspecialchars($val['user_name']).'</a>' : pun_htmlspecialchars($val['topic_poster']);
?>
<div class="news">
   <h4><?php echo pun_htmlspecialchars($val['topic_subject']); ?></h4>
   <p class="news_info"><?php echo 'Publié le ' . format_time($val['msg_posted']).' par ' . $username; ?> - <a href="<?php echo PUN_ROOT.'viewtopic.php?id='.$val['msg_topic']; ?>"><?php echo $val['topic_replies'] . ' commentaires'; ?></a></p>
   <div class="p"><?php echo parse_message($val['msg_text'],$val['msg_smilies']); ?>
       <p class="goto"><a href="#top"><?php echo 'Revenir en haut'; ?></a></p>
   </div>
</div>
<?php
       }
   }
   else
       echo '<p class="notice">Aucune news !</p>';
}
else
   echo '<p class="notice">Aucune news à afficher !</p>';
?>
<p class="links"><a href="<?php echo PUN_ROOT.'viewforum.php?id='.PUN_NEWS; ?>" id="shownews"><?php echo 'Voir toutes les news'; ?></a></p>


Ce script prend en compte le parsage des BBCodes et des smilies.  Par contre, notez que vous devez avoir défini PUN_ROOT au début de vos pages pour que le lien à la fin du script redirige correctement au forum des news (c'est normalement indiqué dans le wiki sur l'utilisation des session de FluxBB).

Vous pouvez bien sûr adapter le script pour l'utilisation de clés de langues (pour les sites multilingues) notamment.
Il ne vous reste ensuite qu'à mettre ça en forme avec le CSS, et à faire une ancre #top dans le haut de votre page pour faciliter la navigation pour tous.
Edited by Ishimaru Chiaki on 29/04/2012 at 14h20.

 >  Fast reply

Message

Ishimaru-Design > Tutoriaux, ressources et support (fr) > FluxBB 1.4 > Tutoriels > [Astuce] Système de news sur votre site

 >  Stats

0 user(s) connected during the last 10 minutes (0 member(s) and 0 guest(s)).