FluxBB.fr

Le site des utilisateurs francophones de FluxBB.

Vous n'êtes pas identifié(e).

#1 28-04-2012 03:32:13

Ishimaru Chiaki
Membre
Lieu : Baie-Comeau, Québec
Inscription : 02-10-2008
Messages : 99
Site Web

[Module] Afficher les news sur son site depuis un forum

Bonjour,

Je me suis rendue compte dernièrement que j'avais oublié de faire un tuto sur la mise en place d'un script de news sur son site, pour afficher les dernières news depuis un forum.  C'est en place sur mon site en local depuis longtemps déjà et il s'agit d'une adaptation du script de news fourni par la documentation de Connectix Boards.

Notez que la version sur mon site en local n'est pas identique puisque j'utilise une variable GET pour accéder aux news, des fonctions modifiées de FluxBB ainsi que des clés de langue pour gérer l'anglais et le français.
Il se peut donc qu'il y ait des erreurs dans la version que je poste ici, donc n'hésitez pas à me les signaler !
--------------------------------------

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.

[size=20]Prérequis[/size]

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.

[size=20]Création de la page[/size]

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.

Dernière modification par Ishimaru Chiaki (29-04-2012 20:14:28)


PC Alienware sous Win7 - GIMP 2.8 - XHTML/CSS (avancé) - PHP/MySQL (medium)
Convertisseur Connectix Boards vers FluxBB et Auto Poll pour 1.4/1.5 disponibles sur GitHub !
Artiste à mes heures

Hors ligne

#2 28-04-2012 15:49:41

numa001
Membre
Inscription : 14-04-2012
Messages : 31
Site Web

Re : [Module] Afficher les news sur son site depuis un forum

Ca marche pas chez moi : ca me dit : aucune news !

Hors ligne

#3 28-04-2012 20:15:40

fanf73
Wik-wiki
Lieu : Lyon
Inscription : 12-09-2006
Messages : 4 432
Site Web

Re : [Module] Afficher les news sur son site depuis un forum

Est-ce que tu as bien changé l'id du forum contenant les news, comme indiqué dans le message ?


Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.

Hors ligne

#4 28-04-2012 22:48:05

Ishimaru Chiaki
Membre
Lieu : Baie-Comeau, Québec
Inscription : 02-10-2008
Messages : 99
Site Web

Re : [Module] Afficher les news sur son site depuis un forum

Si tu es le même membre que sur Ishimaru-Design :

Ishimaru Chiaki @ 28/04/2012 - 16h42 a écrit :

Est-ce qu'au début de tes pages, tu as défini la constante PUN_ROOT ?  Dans ton cas, ce serait

define('PUN_ROOT','./fluxbb/');

Je recommande d'utiliser une constante, car si tu fais plusieurs liens vers le forum depuis le site, tu n'auras pas 75 liens à éditer dans tes fichiers si le chemin change.  Avec une constante, ça ne fait qu'un endroit à modifier.


PC Alienware sous Win7 - GIMP 2.8 - XHTML/CSS (avancé) - PHP/MySQL (medium)
Convertisseur Connectix Boards vers FluxBB et Auto Poll pour 1.4/1.5 disponibles sur GitHub !
Artiste à mes heures

Hors ligne

#5 29-04-2012 06:56:22

numa001
Membre
Inscription : 14-04-2012
Messages : 31
Site Web

Re : [Module] Afficher les news sur son site depuis un forum

Oui l'id est la bonne, et oui j'ai bien définit le chemin de fluxbb.

Voila mon code :

<?php
define('PUN_ROOT', './forums/');
define('PUN_TURN_OFF_MAINT', 1);
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']) . ' / Accueil');
define('PUN_ALLOW_INDEX', 1);
require PUN_ROOT.'header.php';

// 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

// 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>
<?php
require PUN_ROOT.'footer.php';
?>

Hors ligne

#6 29-04-2012 08:37:57

Ishimaru Chiaki
Membre
Lieu : Baie-Comeau, Québec
Inscription : 02-10-2008
Messages : 99
Site Web

Re : [Module] Afficher les news sur son site depuis un forum

Quelle est la nature du non-fonctionement ?


PC Alienware sous Win7 - GIMP 2.8 - XHTML/CSS (avancé) - PHP/MySQL (medium)
Convertisseur Connectix Boards vers FluxBB et Auto Poll pour 1.4/1.5 disponibles sur GitHub !
Artiste à mes heures

Hors ligne

#7 29-04-2012 11:07:07

PascL
Membre
Inscription : 06-09-2007
Messages : 554
Site Web

Re : [Module] Afficher les news sur son site depuis un forum

Bonjour,

l'erreur est sur ce bout de code:

if(!$db->num_rows($result2) > 0)

C'est plutôt
if(!$db->num_rows($result2))
ou bien
if($db->num_rows($result2) > 0)
Faut pas le '!' et le '>0' en même temps smile

Hors ligne

#8 29-04-2012 20:13:38

Ishimaru Chiaki
Membre
Lieu : Baie-Comeau, Québec
Inscription : 02-10-2008
Messages : 99
Site Web

Re : [Module] Afficher les news sur son site depuis un forum

Arf, j'avais loupé cette ligne au moment d'adapter mon script pour le tutoriel, car sur mon site, j'utilise plutôt le "FluxBB-way", c'est-à-dire par exemple:

if(!$db->num_rows($result2) > 0)
    site_msg('message d'erreur');

site_msg() étant une version modifiée de message() pour le site.

Je vais corriger ça.


PC Alienware sous Win7 - GIMP 2.8 - XHTML/CSS (avancé) - PHP/MySQL (medium)
Convertisseur Connectix Boards vers FluxBB et Auto Poll pour 1.4/1.5 disponibles sur GitHub !
Artiste à mes heures

Hors ligne

#9 06-01-2013 01:10:40

LeRelOo
Membre
Inscription : 06-01-2013
Messages : 5

Re : [Module] Afficher les news sur son site depuis un forum

Salut, merci beaucoup pour ce script, il marche du premier coup smile  mais la ou j'ai un problème, c'est sur les caractères spéciaux.

 j’obtiens  piège à pour pièges.

un petit indice ? s'il vous plaît xD

Hors ligne

#10 06-01-2013 02:23:09

sklerder
Membre
Inscription : 04-09-2012
Messages : 165
Site Web

Re : [Module] Afficher les news sur son site depuis un forum

Bonjour.

Enregistre ton fichier en "UTF-8 sans BOM" smile

Hors ligne

#11 06-01-2013 02:52:46

LeRelOo
Membre
Inscription : 06-01-2013
Messages : 5

Re : [Module] Afficher les news sur son site depuis un forum

Parfait merci bien pour cette réponse rapide smile

Hors ligne

#12 26-02-2013 22:35:44

david18
Membre
Lieu : France
Inscription : 28-10-2012
Messages : 467
Site Web

Re : [Module] Afficher les news sur son site depuis un forum

Bonsoir ,

je voudrait que mes news s'affiche sous forme de lien et qui revois directement sur une id désirer merci de votre aide


cdlt

Dernière modification par david18 (08-04-2014 20:22:44)

Hors ligne

Pied de page des forums