FluxBB.fr

Le site des utilisateurs francophones de FluxBB.

Recherche rapide

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

Version 1.4.13 : [.tar.gz][.zip] (maj 20/10/2014)
Pack langue française pour 1.4.x : [.zip] (maj 06/01/2012)

Branche 1.5.x : fluxbb.org
Pack langue française pour 1.5.x : [.zip] (maj 14/01/2016)

Ancienne Version 1.2.24 fr : [.zip] (maj 26/08/2011)

Vous avez un problème ?
Avant de poser votre question sur les forums d'entraide nous vous invitons à consulter :

#1 11-08-2011 05:52:27

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

Module "Dernières réponses" sur votre site

Vous êtes en train de faire un site utilisant les sessions de votre forum FluxBB, et vous aimeriez bien afficher les 10 dernères réponses dans le menu latéral du site ?

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 du fichier

Commencez d'abord par créer le nouveau fichier qui contiendra le code (lastposts.php), puis incluez-la où vous le voulez (menu latéral, accueil, etc.)

<?php include('include/lastposts.php'); ?>

(faites de préférence un dossier spécifique pour les différents fichiers inclus de votre site, ça fait plus rangé)

Pour la suite, je donnerai les codes en fonction d'un affichage dans un menu latéral.  Vous n'avez qu'à adapter le code HTML pour vos besoins.
Aussi, même si j'utilise un système de clés de langue sur mon site, je donnerai les codes avec les textes en dur.  Libre à vous de les rendre localisables comme je le fais.

Code de base

On commence avec le code de base, à mettre dans votre fichier :

<div class="submenu">
<h2>Dernières réponses</h2>
<ul class="lasttopics">
<?php

     //Contenu du module

?>
</ul>
</div>

On a donc notre bloc, avec le titre et la liste à puces... qui n'a pas de puces pour le moment, mais ça va venir.

La constante

Afin de pouvoir changer plus facilement le nombre de réponses, par exemple pour en avoir 5 au lieu de 10, on va définir une constante, de cette façon :

define('PUN_REPLIES',10);

Il ne restera qu'à insérer cette constante dans les requêtes qui viendront par la suite.  Vous n'avez qu'à changer le nombre si vous voulez un nombre différent de 10 (ex: 5 ou 20)

la condition

Maintenant, puisque vous avez sûrement des sujets qui ne sont pas visibles aux invités, voire à certains groupes, il vous faudra vérifier le statut de l'utilisateur.
Puisque l'administrateur a accès à tous les sujets, on va donc vérifier si l'utilisateur est administrateur du forum, en utilisant la variable utilisateur $pun_user['g_id'] avec la constante PUN_ADMIN, dans une condition if...else :

if($pun_user['g_id'] != PUN_ADMIN) {
    //Requêtes en fonction d'un utilisateur qui n'est pas admin
}
else {
    //Requête en fonction d'un utilisateur qui est admin
}

Vous le placez après la ligne de la constante.
Cela vous donnera ceci, jusqu'ici :

<div class="submenu">
<h2>Dernières réponses</h2>
<ul class="lasttopics">
<?php
//On définit la constante pour le nombre de réponses
define('PUN_REPLIES',10);

if($pun_user['g_id'] != PUN_ADMIN) {
    //Requêtes en fonction d'un utilisateur qui n'est pas admin
}
else {
    //Requête en fonction d'un utilisateur qui est admin
}

?>
</ul>
</div>

On est prêt à mettre du gras dans nos conditions !

Les requêtes

Note : Puisque la requête finale va varier selon plusieurs paramètres, je vais utiliser une variable pour stocker la requête, afin de ne la lancer véritablement qu'une fois les vérifications terminées.

Puisqu'un utilisateur qui n'est pas admin peut ne pas avoir accès aux sujets de certains forums, on doit d'abord connaître les forums à exclure, ce qui fait que dans la première partie de notre condition, on va d'abord faire une première requête pour récupérer les forums ayant la permission de lecture à 0 pour son groupe.  Une boucle permet ensuite de récupérer le tout sous forme d'un tableau.

    $req = $db->query('SELECT id
                    FROM '.$db->prefix.'forums
                    JOIN '.$db->prefix.'forum_perms ON forum_id=id
                    WHERE group_id='.$pun_user['g_id'].' AND read_forum=0');
    $ids = array();
    while($auth = $db->fetch_assoc($req))
    {
        $ids[] = $auth['id'];
    }

Mais puisqu'il se peut qu'il n'y ait pas de forum à exclure, on doit vérifier le nombre de clés dans le tableau résultant.  Pour cela, on va utiliser la fonction count() dans une condition :

   if(count($ids) > 0) {
        //Il y a des forums à exclure
    }
    else {
        //Il n'y a pas de forum à exclure
    }

Dans le cas où l'on doit exclure des forums, on doit ajuster la requête pour exclure les sujets se trouvant dans lesdits forums.

        $sql = 'SELECT id,subject,num_replies,last_post,last_post_id,last_poster,forum_id
            FROM '.$db->prefix.'topics
            WHERE forum_id NOT IN ('.implode(',',$ids).')
            ORDER BY last_post_id DESC LIMIT 0,'.PUN_REPLIES;

Vous vous rappelez de la constante PUN_REPLIES au début ?  Cela vous évite d'avoir à fouiller au coeur des requêtes juste pour changer le nombre de réponses à afficher.
Ensuite, vous remarquerez le NOT IN ('implode(',',$ids.') dans la troisième ligne.  C'est là que s'effectue le tri pour exclure les sujets inaccessibles à l'utilisateur.  Et puisque NOT IN doit travailler avec une chaîne de caractères en utilisant la virgule comme séparateur, il suffit d'utiliser la fonction implode() pour "aplatir" notre tableau !

Maintenant, s'il n'y a rien à exclure, on n'a qu'à refaire la requête, sans la troisième ligne.  Cette requête est la même quand la première requête ne retourne aucun forum à exclure et quand l'utilisateur est admin.

       $sql = 'SELECT id,subject,num_replies,last_post,last_post_id,last_poster,forum_id
            FROM '.$db->prefix.'topics
            ORDER BY last_post_id DESC LIMIT 0,'.PUN_REPLIES;

Voici ce que ça donne jusqu'ici :

<div class="submenu">
<h2>Dernières réponses</h2>
<ul class="lasttopics">
<?php
//On définit la constante pour le lien relatif vers le profil
define('PUN_REPLIES',10);

//C'est pas mal plus simple d'aller chercher les forums inaccessibles à l'utilisateur avant de faire le reste
if($pun_user['g_id'] != PUN_ADMIN) {
    $req = $db->query('SELECT id
                    FROM '.$db->prefix.'forums
                    JOIN '.$db->prefix.'forum_perms ON forum_id=id
                    WHERE group_id='.$pun_user['g_id'].' AND read_forum=0');
    $ids = array();
    while($auth = $db->fetch_assoc($req))
    {
        $ids[] = $auth['id'];
    }
    if(count($ids) > 0) {
        $sql = 'SELECT id,subject,num_replies,last_post,last_post_id,last_poster,forum_id
            FROM '.$db->prefix.'topics
            WHERE forum_id NOT IN ('.implode(',',$ids).')
            ORDER BY last_post_id DESC LIMIT 0,'.PUN_REPLIES;
    }
    else {
        $sql = 'SELECT id,subject,num_replies,last_post,last_post_id,last_poster,forum_id
            FROM '.$db->prefix.'topics
            ORDER BY last_post_id DESC LIMIT 0,'.PUN_REPLIES;
    }
}
else {
    $sql = 'SELECT id,subject,num_replies,last_post,last_post_id,last_poster,forum_id
            FROM '.$db->prefix.'topics
            ORDER BY last_post_id DESC LIMIT 0,'.PUN_REPLIES;
}

?>
</ul>
</div>

Maintenant, il ne nous reste plus qu'à s'occuper de l'affichage.

Affichage des réponses

On est maintenant rendu au meilleur, soit l'affichage des réponses en tant que tel !

Puisqu'on n'a fait que préparer la requête, on va maintenant la lancer, et faire notre boucle pour récupérer tout ça :

$result = $db->query($sql) or error('Unable to fetch replies list', __FILE__, __LINE__, $db->error());
while ($val = $db->fetch_assoc($result))
{
    //Affichage des données
}

Mais avant de tout afficher, je vous rappelle que si un sujet contient beaucoup de messages, il fera plusieurs pages.  Or, le nombre de messages par page peut varier selon les préférences de l'utilisateur (si l'utilisateur est enregistré) et selon la valeur par défaut définie dans le panneau d'administration, pour les invités.
Pour cela, on va vérifier si le variable utilisateur $pun_user['disp_posts'] est vide ou non, en utilisant une condition.

    //On vérifie si la valeur de notre variable de préférence existe
    if (!empty($pun_user['disp_posts']))
    {
        //dans ce cas, on simplifie nos variables pour la suite
        $disp_posts = $pun_user['disp_posts'];
        $num_replies = $val['num_replies'];
    }
    else //la valeur est vide, donc on prend la valeur par défaut
    {
        $num_replies = $pun_config['o_disp_posts_default'];
        $num_replies = $val['num_replies'];
    }

J'ai simplifié les variables pour ne pas avoir des variables à rallonge au moment de l'affichage.

On termine finalement avec l'affichage final, où l'on calcule la page de la réponse en même temps !

   //On affiche tout !
    echo '<li><a href="'.PUN_ROOT.'viewtopic.php?id'.$val['id'].'&amp;p='.ceil(($num_replies+1)/$disp_posts).'&amp;pid='.$val['last_post_id'].'#'.$val['last_post_id'].'" rel="nofollow">'. $val['subject'].'</a> &raquo; ' .date('d/m/Y - H\:i',$val['last_post']) . $lang['lastposts_by'] .' '.$val['last_poster'].'</li>';

Le rel="nofollow" sert à indiquer aux moteurs de recherche de ne pas indexer ces liens, afin de prévenir les duplications de contenu.

Résultat final

Voici ce que ça donne au final :

<div class="submenu">
<h2>Dernières réponses</h2>
<ul class="lasttopics">
<?php
//On définit la constante pour le lien relatif vers le profil
define('PUN_REPLIES',10);

//C'est pas mal plus simple d'aller chercher les forums inaccessibles à l'utilisateur avant de faire le reste
if($pun_user['g_id'] != PUN_ADMIN) {
    $req = $db->query('SELECT id
                    FROM '.$db->prefix.'forums
                    JOIN '.$db->prefix.'forum_perms ON forum_id=id
                    WHERE group_id='.$pun_user['g_id'].' AND read_forum=0');
    $ids = array();
    while($auth = $db->fetch_assoc($req))
    {
        $ids[] = $auth['id'];
    }
    if(count($ids) > 0) {
        $sql = 'SELECT id,subject,num_replies,last_post,last_post_id,last_poster,forum_id
            FROM '.$db->prefix.'topics
            WHERE forum_id NOT IN ('.implode(',',$ids).')
            ORDER BY last_post_id DESC LIMIT 0,'.PUN_REPLIES;
    }
    else {
        $sql = 'SELECT id,subject,num_replies,last_post,last_post_id,last_poster,forum_id
            FROM '.$db->prefix.'topics
            ORDER BY last_post_id DESC LIMIT 0,'.PUN_REPLIES;
    }
}
else {
    $sql = 'SELECT id,subject,num_replies,last_post,last_post_id,last_poster,forum_id
            FROM '.$db->prefix.'topics
            ORDER BY last_post_id DESC LIMIT 0,'.PUN_REPLIES;
}
// Récupération des sonnées des derniers sujets
$result = $db->query($sql) or error('Unable to fetch replies list', __FILE__, __LINE__, $db->error());
while ($val = $db->fetch_assoc($result))
{
    //On vérifie si la valeur de notre variable de préférence existe
    if (!empty($pun_user['disp_posts']))
    {
        //dans ce cas, on simplifie nos variables pour la suite
        $disp_posts = $pun_user['disp_posts'];
        $num_replies = $val['num_replies'];
    }
    else //la valeur est vide, donc ce sera la valeur par défaut
    {
        $num_replies = $pun_config['o_disp_posts_default'];
        $num_replies = $val['num_replies'];
    }
    //On affiche tout !
    echo '<li><a href="'.PUN_ROOT.'viewtopic.php?id'.$val['id'].'&amp;p='.ceil(($num_replies+1)/$disp_posts).'&amp;pid='.$val['last_post_id'].'#'.$val['last_post_id'].'" rel="nofollow">'. $val['subject'].'</a> &raquo; ' .date('d/m/Y - H\:i',$val['last_post']) . $lang['lastposts_by'] .' '.$val['last_poster'].'</li>';
}

?>
</ul>
</div>

Il ne vous reste plus qu'à styler le tout avec du CSS !


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 12-08-2011 16:53:05

Mpok
Néo Admin
Inscription : 10-08-2006
Messages : 2 923
Site Web

Re : Module "Dernières réponses" sur votre site

Très bon tuto (en plus, sur une question fréquemment posée)…
GG.


Life is a struggle, programming is a suffer.

Hors ligne

#3 12-08-2011 18:14:19

Otomatic
Régisseur
Lieu : Paris, France
Inscription : 12-12-2005
Messages : 3 489
Site Web

Re : Module "Dernières réponses" sur votre site

Bonsoir,

@Ishimaru Chiaki Signature pas à jour. De plus, je pense qu'il ne faut pas donner en public des indications sur les présences ou absences.


Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche

Hors ligne

#4 15-08-2011 03:18:20

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

Re : Module "Dernières réponses" sur votre site

Otomatic a écrit :

Bonsoir,

@Ishimaru Chiaki Signature pas à jour. De plus, je pense qu'il ne faut pas donner en public des indications sur les présences ou absences.

Premièrement, j'avais oublié de l'enlever.
Deuxièmement, pour m'être déjà disputée avec mon ancien co-rédacteur (de mon cours sur Gimp) parce qu'il n'avait pas daigné me signaler qu'il allait être en vacances alors que j'attendais comme une *biiiip* de conne pendant 2 semaines qu'il réponde à mon MP de doléances suite à justement un conflit concernant une expression régionale que j'avais glissé et qu'il avait effacé sans demander mon avis... dans ce cas, si j'aime pas qu'on m'avertisse pas d'une absence (en particulier dans une équipe), alors je déteste l'idée qu'on pense que je fais la sourde oreille ou que je me fous des utilisateurs de mes scripts/thèmes, quand on me demande du support ou autre en plein pendant une période de vacances où je n'ai pas le net !  Juste cette idée qu'on pense ça me stresse (moi qui suis nerveuse d'avance !), d'où l'indication dans ma signature, ce qui fait que si yen a qui chiâlent que je réponds pas, ce sera LEUR problème, pas la mienne ! ...et jusqu'ici personne ne m'a jamais fait la remarque !


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 15-08-2011 08:48:46

Otomatic
Régisseur
Lieu : Paris, France
Inscription : 12-12-2005
Messages : 3 489
Site Web

Re : Module "Dernières réponses" sur votre site

Ishimaru Chiaki a écrit :

...et jusqu'ici personne ne m'a jamais fait la remarque !

Bonjour,

À mon humble avis, c'est juste pour un problème de sécurité qu'il faut éviter de donner des indications publiques d'absence. Là, tu indiques à tous les éventuels cambrioleurs la période où tu ne sera pas présente. Pour peu que tu aies laissé d'autres indications publiques quant à ton adresse... siffle


Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche

Hors ligne

#6 15-08-2011 18:55:13

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

Re : Module "Dernières réponses" sur votre site

Je n'affiche jamais mon adresse, ni mon n. de tel en public, et je suis encore avare sur mon nom complet.  Et sur mon Facebook, j'ai restreint tous les accès : personne à part ceux que j'ai acceptés dans ma liste (dont je suis assez sélective) n'a accès à mon mur et à mes infos.


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 11-03-2013 10:04:03

david18
Habitué très actif
Lieu : France
Inscription : 28-10-2012
Messages : 466
Site Web

Re : Module "Dernières réponses" sur votre site

Bonjours,


moi je voudrait mettre ce système sur ma page d'accueil de wordpress cars mon forum y est rattacher  , le probléme c'est que je ne voit pas trop comment y ajouter  le fichier de common.php , le dossier lastposts.php , et insérer le fichier de base  décrite part Ishimaru Chiaki  ?


Ps: si vous auriez  extrême gentillesse de me guider par un petit tuto rapide en quelque ligne .. SVP wink

cdlt

david

Hors ligne

#8 26-03-2013 13:40:47

david18
Habitué très actif
Lieu : France
Inscription : 28-10-2012
Messages : 466
Site Web

Re : Module "Dernières réponses" sur votre site

personne hmm

Hors ligne

#9 26-03-2013 15:52:06

Defaz
Habitué très actif
Inscription : 30-11-2006
Messages : 700
Site Web

Re : Module "Dernières réponses" sur votre site

Ishimaru Chiaki a écrit :
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.

En suivant ce lien tu devrais trouver ce qu'il te faut wink

Hors ligne

#10 27-03-2013 07:56:38

david18
Habitué très actif
Lieu : France
Inscription : 28-10-2012
Messages : 466
Site Web

Re : Module "Dernières réponses" sur votre site

bonjours,



merci pour ta réponse  Defaz , j'utilise wordpress et mon forum y est rattacher   et je voudrait  mettre les dernières réponses sur la page d'accueil de wordpress . Et le soucis c'est au quels niveau il faut placer les dossiers  cars j'ai des warning soit les dossiers sont mal placer ou mal éditer hmm


Est ce que le dossiers common ce résume juste a ça :

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

implanter cette ligne dans un dossier de wordpress :

 <?php include('include/lastposts.php'); ?>

et crée le fichier lastposts.php

qui ce résume à ça :


<div class="submenu">
<h2>Dernières réponses</h2>
<ul class="lasttopics">
<?php
//On définit la constante pour le lien relatif vers le profil
define('PUN_REPLIES',10);

//C'est pas mal plus simple d'aller chercher les forums inaccessibles à l'utilisateur avant de faire le reste
if($pun_user['g_id'] != PUN_ADMIN) {
    $req = $db->query('SELECT id
                    FROM '.$db->prefix.'forums
                    JOIN '.$db->prefix.'forum_perms ON forum_id=id
                    WHERE group_id='.$pun_user['g_id'].' AND read_forum=0');
    $ids = array();
    while($auth = $db->fetch_assoc($req))
    {
        $ids[] = $auth['id'];
    }
    if(count($ids) > 0) {
        $sql = 'SELECT id,subject,num_replies,last_post,last_post_id,last_poster,forum_id
            FROM '.$db->prefix.'topics
            WHERE forum_id NOT IN ('.implode(',',$ids).')
            ORDER BY last_post_id DESC LIMIT 0,'.PUN_REPLIES;
    }
    else {
        $sql = 'SELECT id,subject,num_replies,last_post,last_post_id,last_poster,forum_id
            FROM '.$db->prefix.'topics
            ORDER BY last_post_id DESC LIMIT 0,'.PUN_REPLIES;
    }
}
else {
    $sql = 'SELECT id,subject,num_replies,last_post,last_post_id,last_poster,forum_id
            FROM '.$db->prefix.'topics
            ORDER BY last_post_id DESC LIMIT 0,'.PUN_REPLIES;
}
// Récupération des sonnées des derniers sujets
$result = $db->query($sql) or error('Unable to fetch replies list', __FILE__, __LINE__, $db->error());
while ($val = $db->fetch_assoc($result))
{
    //On vérifie si la valeur de notre variable de préférence existe
    if (!empty($pun_user['disp_posts']))
    {
        //dans ce cas, on simplifie nos variables pour la suite
        $disp_posts = $pun_user['disp_posts'];
        $num_replies = $val['num_replies'];
    }
    else //la valeur est vide, donc ce sera la valeur par défaut
    {
        $num_replies = $pun_config['o_disp_posts_default'];
        $num_replies = $val['num_replies'];
    }
    //On affiche tout !
    echo '<li><a href="'.PUN_ROOT.'viewtopic.php?id'.$val['id'].'&amp;p='.ceil(($num_replies+1)/$disp_posts).'&amp;pid='.$val['last_post_id'].'#'.$val['last_post_id'].'" rel="nofollow">'. $val['subject'].'</a> &raquo; ' .date('d/m/Y - H\:i',$val['last_post']) . $lang['lastposts_by'] .' '.$val['last_poster'].'</li>';
}

?>
</ul>
</div>

si j'ai bien compris hmm  ou common.php et le fichier laspost.php et un seul fichier  merci d'avance pour vos lumières ...


cdlt

david18

Hors ligne

#11 27-03-2013 16:17:14

Defaz
Habitué très actif
Inscription : 30-11-2006
Messages : 700
Site Web

Re : Module "Dernières réponses" sur votre site

Salut,

Il te faut créer un fichier dans lequel tu auras toutes tes lignes de code, tu dois même pouvoir intégrer l'ensemble sur le même fichier en commençant par :

<?php
define('PUN_ROOT', './forums/');
require PUN_ROOT.'include/common.php';
?>
<div class="submenu">
<h2>Dernières réponses</h2>
<ul class="lasttopics">
<?php
//On définit la constante pour le lien relatif vers le profil
define('PUN_REPLIES',10);

//C'est pas mal plus simple d'aller chercher les forums inaccessibles à l'utilisateur avant de faire le reste
if($pun_user['g_id'] != PUN_ADMIN) {
    $req = $db->query('SELECT id
                    FROM '.$db->prefix.'forums
                    JOIN '.$db->prefix.'forum_perms ON forum_id=id
                    WHERE group_id='.$pun_user['g_id'].' AND read_forum=0');
    $ids = array();
    while($auth = $db->fetch_assoc($req))
    {
        $ids[] = $auth['id'];
    }
    if(count($ids) > 0) {
        $sql = 'SELECT id,subject,num_replies,last_post,last_post_id,last_poster,forum_id
            FROM '.$db->prefix.'topics
            WHERE forum_id NOT IN ('.implode(',',$ids).')
            ORDER BY last_post_id DESC LIMIT 0,'.PUN_REPLIES;
    }
    else {
        $sql = 'SELECT id,subject,num_replies,last_post,last_post_id,last_poster,forum_id
            FROM '.$db->prefix.'topics
            ORDER BY last_post_id DESC LIMIT 0,'.PUN_REPLIES;
    }
}
else {
    $sql = 'SELECT id,subject,num_replies,last_post,last_post_id,last_poster,forum_id
            FROM '.$db->prefix.'topics
            ORDER BY last_post_id DESC LIMIT 0,'.PUN_REPLIES;
}
// Récupération des sonnées des derniers sujets
$result = $db->query($sql) or error('Unable to fetch replies list', __FILE__, __LINE__, $db->error());
while ($val = $db->fetch_assoc($result))
{
    //On vérifie si la valeur de notre variable de préférence existe
    if (!empty($pun_user['disp_posts']))
    {
        //dans ce cas, on simplifie nos variables pour la suite
        $disp_posts = $pun_user['disp_posts'];
        $num_replies = $val['num_replies'];
    }
    else //la valeur est vide, donc ce sera la valeur par défaut
    {
        $num_replies = $pun_config['o_disp_posts_default'];
        $num_replies = $val['num_replies'];
    }
    //On affiche tout !
    echo '<li><a href="'.PUN_ROOT.'viewtopic.php?id'.$val['id'].'&amp;p='.ceil(($num_replies+1)/$disp_posts).'&amp;pid='.$val['last_post_id'].'#'.$val['last_post_id'].'" rel="nofollow">'. $val['subject'].'</a> &raquo; ' .date('d/m/Y - H\:i',$val['last_post']) . $lang['lastposts_by'] .' '.$val['last_poster'].'</li>';
}

?>
</ul>
</div>

Après il faut surement créer un module pour Wordpress et ça il faudrait peut être voir sur le forum Wordpress directement.

Une autre idée pour constater si ton code fonctionne c'est de créer ton fichier à la racine de ton serveur, par exemple lastpost.php et de le consulter.

Edit : Testé et approuvé wink

Dernière modification par Defaz (27-03-2013 16:20:30)

Hors ligne

#12 30-03-2013 14:58:09

david18
Habitué très actif
Lieu : France
Inscription : 28-10-2012
Messages : 466
Site Web

Re : Module "Dernières réponses" sur votre site

bonjours,


ou doit-je mettre cette ligne :

<?php include('include/lastposts.php'); ?>

cdlt

david

Hors ligne

#13 02-04-2013 16:00:46

Defaz
Habitué très actif
Inscription : 30-11-2006
Messages : 700
Site Web

Re : Module "Dernières réponses" sur votre site

Salut,

Comme tout est intégré au code, cette ligne est devenue inutile.

Hors ligne

#14 11-04-2013 18:34:53

david18
Habitué très actif
Lieu : France
Inscription : 28-10-2012
Messages : 466
Site Web

Re : Module "Dernières réponses" sur votre site

bonsoir,


j'ai testé avec ton fichier a la racine  soit du forum ou de mon site ( wordpress ) et ça ne marche pas  en local ?


728072Capture.jpg


en fait la ligne concerner est celle -ci

require PUN_ROOT.'include/common.php'; 

de ton fichier  je capte plus hmm



cdlt

david

Dernière modification par david18 (11-04-2013 18:41:24)

Hors ligne

#15 12-04-2013 07:56:45

Defaz
Habitué très actif
Inscription : 30-11-2006
Messages : 700
Site Web

Re : Module "Dernières réponses" sur votre site

Salut,

Il faut déjà comprendre à quoi servent ces lignes.

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

Celle-ci c'est pour définir le chemin du fichier vers le dossier du forum. En l'occurrence ici le forum est dans le dossier "forums" mais on peut aussi rajouter des niveaux ou en remonter pour aller le chercher, par exemple :

Tu as deux dossiers, un pour wordpress et un pour fluxbb et bien il faut mettre quelque chose du genre :

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

Si ce lien est incorrect, alors l'erreur se produit sur la ligne :

require PUN_ROOT.'include/common.php';

Hors ligne

#16 12-04-2013 11:01:45

david18
Habitué très actif
Lieu : France
Inscription : 28-10-2012
Messages : 466
Site Web

Re : Module "Dernières réponses" sur votre site

bonjours,

Nickel Defaz ça marche big_smile 

612868Capture.jpg


Par contre est ce qu'il est possible de mettre la date  devant chaqu'un des topics en agissant sur cette ligne  ?

    //On affiche tout !
    echo '<li><a href="'.PUN_ROOT.'viewtopic.php?id'.$val['id'].'&amp;p='.ceil(($num_replies+1)/$disp_posts).'&amp;pid='.$val['last_post_id'].'#'.$val['last_post_id'].'" rel="nofollow">'. $val['subject'].'</a> &raquo; ' .date('d/m/Y - H\:i',$val['last_post']) . $lang['lastposts_by'] .' '.$val['last_poster'].'</li>';
}

Ps : encore une fois merci pour ton aide et ta patience wink

cdlt

david

Hors ligne

#17 12-04-2013 11:18:52

Defaz
Habitué très actif
Inscription : 30-11-2006
Messages : 700
Site Web

Re : Module "Dernières réponses" sur votre site

Il faut jouer avec cette partie :

date('d/m/Y - H\:i',$val['last_post'])

Hors ligne

#18 12-04-2013 19:03:52

david18
Habitué très actif
Lieu : France
Inscription : 28-10-2012
Messages : 466
Site Web

Re : Module "Dernières réponses" sur votre site

bonsoir ,


d'accord et merci   pour terminer  deux dernières question :

1 /  doit-je  déplace cette ligne et la mettre avant autre chose  ?

2/ comment est ce que je peut placer le code  ma capture d'écran sur ma page d’accueil  , aurait t'il un moyen  de déplacer celle-ci  a savoir que le chemin est htpp://www.monsite.com/lastpost.php


et qui apparaît comme ça  et que la  les nouvelle discussion sont afficher :

612868Capture.jpg

alors que si je prend le code html   ci-dessus les nouvelles discussion  n’apparaît pas dans la liste ?

912933Capture.jpg

merci d'avance !!


cdlt

david18

Dernière modification par david18 (13-04-2013 08:01:05)

Hors ligne

#19 13-04-2013 14:40:52

adaur
Habitué très actif
Lieu : Derrière Notepad ++ !
Inscription : 25-09-2008
Messages : 1 937
Site Web

Re : Module "Dernières réponses" sur votre site

Attention! Cette mod n'est pas sécurisée en l'état:

//On affiche tout !
echo '<li><a href="'.PUN_ROOT.'viewtopic.php?id'.$val['id'].'&amp;p='.ceil(($num_replies+1)/$disp_posts).'&amp;pid='.$val['last_post_id'].'#'.$val['last_post_id'].'" rel="nofollow">'. $val['subject'].'</a> &raquo; ' .date('d/m/Y - H\:i',$val['last_post']) . $lang['lastposts_by'] .' '.$val['last_poster'].'</li>';

Il faut appliquer pun_htmlspecialchars sur toutes les données fournies par l'utilisateur, à savoir le sujet et le nom du dernier poster:

//On affiche tout !
echo '<li><a href="'.PUN_ROOT.'viewtopic.php?id'.$val['id'].'&amp;p='.ceil(($num_replies+1)/$disp_posts).'&amp;pid='.$val['last_post_id'].'#'.$val['last_post_id'].'" rel="nofollow">'. pun_htmlspecialchars($val['subject']).'</a> &raquo; ' .date('d/m/Y - H\:i',$val['last_post']) . $lang['lastposts_by'] .' '.pun_htmlspecialchars($val['last_poster']).'</li>';

Dernière modification par adaur (13-04-2013 21:21:58)


"As code is more often read than written it's really important to write clean code." - Franz
Twitter: @adaurfr
Mon fork de FluxBB: FeatherBB

Hors ligne

#20 13-04-2013 15:01:21

david18
Habitué très actif
Lieu : France
Inscription : 28-10-2012
Messages : 466
Site Web

Re : Module "Dernières réponses" sur votre site

bonjours ,


d'accord et merci  j'ai essayer avec ton code  mais j'ai une erreur qui me dit  " erreur serveur  " mauvaise configuration ou incorrect  donc plus d'affichage et quand j’enlève  pun_htmlspecialchars    l'affichage revient   merci d'avance wink


cdlt

david

Dernière modification par david18 (13-04-2013 15:15:36)

Hors ligne

#21 13-04-2013 21:16:55

PascL
Habitué très actif
Inscription : 06-09-2007
Messages : 554
Site Web

Re : Module "Dernières réponses" sur votre site

Salut,

Il manque une parenthèse: pun_htmlspecialchars ( ... )

Pour les autres questions:
1/ Ce que defaz a indiqué est une partie de la ligne. Si tu souhaites mettre ce morceau ailleurs sur la ligne, tu dois le déplacer.

2/ Je demande un décodeur happy


@ Ishimaru Chiaki (et aux autres):
Ya une petite erreur vers la fin:

if (!empty($pun_user['disp_posts']))
    {
        //dans ce cas, on simplifie nos variables pour la suite
        $disp_posts = $pun_user['disp_posts'];
        $num_replies = $val['num_replies'];
    }
    else //la valeur est vide, donc ce sera la valeur par défaut
    {
        $num_replies$disp_posts = $pun_config['o_disp_posts_default'];
        $num_replies = $val['num_replies'];
    }

Hors ligne

#22 14-04-2013 07:53:31

david18
Habitué très actif
Lieu : France
Inscription : 28-10-2012
Messages : 466
Site Web

Re : Module "Dernières réponses" sur votre site

Bonjours,


C'est nickel et j'ai rajouté la parenthèse big_smile ce  qui donne ça : http://www.fansvswild.com/lastpost.php


Et pour ma part j'ai déjà fait comme ça  en test  sur ma page d'accueil et a rajouter du css  de mon site   :

544715Capture.jpg


le soucis c'est que les derniers sujet poster ne sont pas  inscrit  , mais je vais trouver cool et merci !


cdlt

david 18

Dernière modification par david18 (14-04-2013 07:54:37)

Hors ligne

#23 29-12-2013 19:46:52

kipof
Habitué
Inscription : 07-12-2006
Messages : 101
Site Web

Re : Module "Dernières réponses" sur votre site

Bonsoir,

Les soirées de vacances d'hivers je me lance dans tout et n'importe quoi et là j'ai voulu test cette solution sur Dotclear et je dois dire que cela ne fonctionne pas vraiment :° après cela peut venir de ma mèche blonde donc voilà ce que j'ai fait:

Pour commencer j'ai crée un fichier _fluxbb.html ( pas de problèmes pour le php dans ces fichiers ) qui se trouve dans

www/theme/Byron/tpl/_fluxbb.html

avec le contenu donné par Defaz ici

qui donne :

<?php
define('PUN_ROOT', '../forum/');
require PUN_ROOT.'include/common.php';
?>
<div class="submenu">
<h2>Dernières réponses</h2>
<ul class="lasttopics">
<?php
//On définit la constante pour le lien relatif vers le profil
define('PUN_REPLIES',10);

//C'est pas mal plus simple d'aller chercher les forums inaccessibles à l'utilisateur avant de faire le reste
if($pun_user['g_id'] != PUN_ADMIN) {
    $req = $db->query('SELECT id
                    FROM '.$db->prefix.'forums
                    JOIN '.$db->prefix.'forum_perms ON forum_id=id
                    WHERE group_id='.$pun_user['g_id'].' AND read_forum=0');
    $ids = array();
    while($auth = $db->fetch_assoc($req))
    {
        $ids[] = $auth['id'];
    }
    if(count($ids) > 0) {
        $sql = 'SELECT id,subject,num_replies,last_post,last_post_id,last_poster,forum_id
            FROM '.$db->prefix.'topics
            WHERE forum_id NOT IN ('.implode(',',$ids).')
            ORDER BY last_post_id DESC LIMIT 0,'.PUN_REPLIES;
    }
    else {
        $sql = 'SELECT id,subject,num_replies,last_post,last_post_id,last_poster,forum_id
            FROM '.$db->prefix.'topics
            ORDER BY last_post_id DESC LIMIT 0,'.PUN_REPLIES;
    }
}
else {
    $sql = 'SELECT id,subject,num_replies,last_post,last_post_id,last_poster,forum_id
            FROM '.$db->prefix.'topics
            ORDER BY last_post_id DESC LIMIT 0,'.PUN_REPLIES;
}
// Récupération des sonnées des derniers sujets
$result = $db->query($sql) or error('Unable to fetch replies list', __FILE__, __LINE__, $db->error());
while ($val = $db->fetch_assoc($result))
{
    //On vérifie si la valeur de notre variable de préférence existe
    if (!empty($pun_user['disp_posts']))
    {
        //dans ce cas, on simplifie nos variables pour la suite
        $disp_posts = $pun_user['disp_posts'];
        $num_replies = $val['num_replies'];
    }
    else //la valeur est vide, donc ce sera la valeur par défaut
    {
        $num_replies = $pun_config['o_disp_posts_default'];
        $num_replies = $val['num_replies'];
    }
    //On affiche tout !
    echo '<li><a href="'.PUN_ROOT.'viewtopic.php?id'.$val['id'].'&amp;p='.ceil(($num_replies+1)/$disp_posts).'&amp;pid='.$val['last_post_id'].'#'.$val['last_post_id'].'" rel="nofollow">'. $val['subject'].'</a> &raquo; ' .date('d/m/Y - H\:i',$val['last_post']) . $lang['lastposts_by'] .' '.$val['last_poster'].'</li>';
}

?>
</ul>
</div>

et là ou je veux que cela s'affiche je colle la balise suivante : {{tpl:include src="_fluxbb.html"}}

sachant que le forum se trouve dans www/forum/

Une petite idée du pourquoi cela ne fonctionne pas ? smile après le code fonctionne car j'ai test sur un fichier seul mais si une personne a fait le test sur dotclear je suis preneur smile

Merci à vous d'avance.

Dernière modification par kipof (29-12-2013 23:48:03)


>> Mon FluxBB  <<
Linux qui tombe en panne c'est un miracle, tout comme Windows qui tombe en marche...

Hors ligne

#24 30-12-2013 07:47:25

david18
Habitué très actif
Lieu : France
Inscription : 28-10-2012
Messages : 466
Site Web

Re : Module "Dernières réponses" sur votre site

Bonjour,


Avez vous essayez avec cette ligne de code :

<?php include('include/lastposts.php'); ?> 

et placer votre dossier dans include de votre forum  ( lastposts.php )

ps: j'utilise cette astuce qui marche très bien


cdlt

Hors ligne

#25 30-12-2013 09:47:27

kipof
Habitué
Inscription : 07-12-2006
Messages : 101
Site Web

Re : Module "Dernières réponses" sur votre site

Dans include ? enfin j'ai crée un fichier a la racine www/fluxbb.php avec le code et il fonctionne mais j'arrive pas a l'adapté a dotclear hmm je vais regarder du coté de dotclear je crois


>> Mon FluxBB  <<
Linux qui tombe en panne c'est un miracle, tout comme Windows qui tombe en marche...

Hors ligne

Pied de page des forums