Les archives de FluxBB.fr
Vous n'êtes pas identifié(e).
/!\ NECESSITE LE MOD "mark topic as read" disponible ici : http://www.punres.org/files.php?pid=46
Cette fonction est très simple :
1. Elle va chercher les titres des derniers topics, ainsi que le nombre de réponses pour chacun d'eux.
2. Si le topic n'est pas lu, il apparait en gras. S'il y'a de nouvelles réponses, le nombre de réponses apparait en gras.
3. Si le topic date d'aujourd'hui, la date apparait dans le style de votre choix (classe #news ul span#today). Si le topic est plus vieux, alors il apparait selon le style spécifié par #news ul span#old.
Code à placer dans votre page web:
<div id="news"><?php getlastposts($idforum,$nombre); ?></div>$idforum = l'id du forum d'où vous voulez extraire les topics
$nombre = nombre de topics que vous voulez afficher dans votre page
Vous devez mettre ce code au début de votre page : (je suis pas sûr que tout soit nécessaire, mais dans le doute...)
if (!defined('PUN_ROOT')) {
define('PUN_ROOT', './punBB/');
define('PUN_TURN_OFF_MAINT', 1);
require_once PUN_ROOT.'include/common.php';
require_once PUN_ROOT.'include/functions.php';
define('PUN_ALLOW_INDEX', 1);
}Et voici le code de la fonction :
function getlastposts($idforum,$nombre)
{
global $db;
// on va chercher les infos dans la base
$sql = 'SELECT id, subject, posted, num_replies, last_post FROM '.$db->prefix.'topics WHERE forum_id='.$idforum.' ORDER BY posted DESC LIMIT 0, '.$nombre;
$result = $db->query($sql) or error('Impossible de retrouver la liste des discussions', __FILE__, __LINE__, $db->error());
if ($db->num_rows($result))
{
// on débute la liste des liens
echo '<ul>';
while ($cur_topic = $db->fetch_assoc($result))
{
// topic lu ?
if (!$pun_user['is_guest'] && topic_is_new($cur_topic['id'], $idforum, $cur_topic['posted']))
{
// si le topic n'est pas lu, alors il apparait en gras
$subject = '<strong>'.$cur_topic['subject'].'</strong>';
}
else
{ $subject = ' '.$cur_topic['subject']; }
// nouveaux messages ?
if (!$pun_user['is_guest'] && topic_is_new($cur_topic['id'], $idforum, $cur_topic['last_post']))
{
// si il y'a des nouveaux messages, on met le nombre de réponses en gras
$replies = '<strong>('.$cur_topic['num_replies'].')</strong>';
}
else
{ $replies = '('.$cur_topic['num_replies'].')'; }
// on transforme la date en format jj/mm/aaaa
$datetopic = date("d/m/y", $cur_topic['posted']);
$spanid = ($datetopic == date("d/m/y")) ? "today" : "old";
// si la date du topic est la même qu'aujourd'hui, alors on lui attribue la classe "today" (pratique pour colorer les news du jour), sinon, on lui attribue la classe "old"
echo '<li><span id="'.$spanid.'">'.$datetopic.'</span><a href="'.PUN_ROOT.'viewtopic.php?id='.$cur_topic['id'].'">'.$subject.'</a> <a href="'.PUN_ROOT.'viewtopic.php?id='.$cur_topic['id'].'&action=new">'.$replies.'</a></li>';
}
echo '</ul>';
}
}Dans votre css il faudra spécifier les classes utilisées (en imaginant que la div dans laquelle la fonction est appelée s'appelle "news"):
/* News
********************************************/
#news div{
padding: 0 0 0 15px;
margin: 0 0 25px 0;
}
#news ul{
list-style-type: none;
margin: 0;
padding: 0;
}
#news a{
text-decoration: none;
color: #2C2C2C;
}
#news li a{
color: #2C2C2C;
background: transparent;
}
#news li a:visited{
color: #2C2C2C;
background: transparent;
}
#news li a:hover{
color: #F6C942;
}
#news ul li{
border-bottom: 1px dotted #C4C4C4;
padding: 0.5ex 0;
}
/* date dépassée */
#news ul span#old{
font-weight: bold;
color: #CCC;
padding: 0 4ex 0 0;
}
/* date du jour présent */
#news ul span#today{
font-weight: bold;
color: #F8950E;
padding: 0 4ex 0 0;
}Dernière modification par Keulig (30-01-2006 21:23:00)
Hors ligne
Est-il possible d'afficher la news en ajax lorsque l'on clique dessus ? Ou simplement d'afficher la news complète à partir de ce script?
Mercii
Hors ligne
Inutile de parler d'ajax quand on n'a pas besoin
Hors ligne
En effet, t'as raison, je tente de coder ça ce soir, je vous tiens au courant
.
Hors ligne
En effet, t'as raison, je tente de coder ça ce soir, je vous tiens au courant
.
Pour un systeme simple qui fait "montrer-cacher" une div, tu peux aller sur mon autre site : http://www.medstour.com (qd tu appuies sur un petit "+" ou sur la ligne correspondante, ça montre + d'infos sur une date).
Dernière modification par Keulig (10-11-2006 17:12:22)
Hors ligne
C'est exactement ce que je pense faire avec l'affichage de la news complète.
Vraiment exceptionnel le site de la tournée, jamais vu quelque chose d'aussi abouti..
pour le script javascript c'est donc
function toggle(divId, imageId)
{
if (document.getElementById)
{
var dataDiv = document.getElementById(divId);
var dataImg = document.getElementById(imageId);
if (dataDiv.style.display == "none")
{
dataDiv.style.display = "block";
dataImg.src = "moins.gif";
}
else
{
dataDiv.style.display = "none";
dataImg.src = "plus.gif";
}
}?
Sinon j'ai toujours celui là
// faq hide/view toggle
function displayToggle(id) {
var el = document.getElementById(id).style;
if(el.display == "none") {
el.display = "block";
}
else if(el.display == "block") {
el.display = "none";
}
}
-->que j'utilise pour ma FAQ.
Dernière modification par justme (10-11-2006 17:35:37)
Hors ligne
Vraiment exceptionnel le site de la tournée, jamais vu quelque chose d'aussi abouti..
Merci, ça fait plaisir ! 
pour le script javascript c'est donc
function toggle(divId, imageId) { if (document.getElementById) { var dataDiv = document.getElementById(divId); var dataImg = document.getElementById(imageId); if (dataDiv.style.display == "none") { dataDiv.style.display = "block"; dataImg.src = "moins.gif"; } else { dataDiv.style.display = "none"; dataImg.src = "plus.gif"; } }?
Sinon j'ai toujours celui là
// faq hide/view toggle function displayToggle(id) { var el = document.getElementById(id).style; if(el.display == "none") { el.display = "block"; } else if(el.display == "block") { el.display = "none"; } } -->que j'utilise pour ma FAQ.
C'est bien ça, je te conseille néanmoins mon script (piqué chez nos amis de chez krosoft dans la rubrique profiles passport) si tu souhaites utiliser une image qui montre que la div est déroulée.
Et n'oublie pas que la div doit se présenter comme celà au début :
<div style="display: none; padding-bottom: 4px" id="prefix{id-de-la-news}" name="prefix{id-de-la-news}"> la news </div>et l'image :
<a href="javascript:onClick=toggle('prefix{id-de-la-news}', 'prefix_image{id-de-la-news}'); return false;"><img src="plus.gif" alt="Plus d'informations" id="prefix_image{id-de-la-news}" name="prefix_image{id-de-la-news}" /></a>(l'utilisation d'un préfixe est conseillée, mais pas du tout nécessaire)
Dernière modification par Keulig (10-11-2006 17:48:29)
Hors ligne
Okay, je vais essayer de voir ça alors, merci.
Hors ligne
echo'<a href="javascript:onClick=toggle(\'prefix{'.$cur_topic['id'].'}\', \'prefix_image{'.$cur_topic['id'].'}\'); return false;"><img src="../images/plus.gif" alt="Plus d\'informations" id="prefix_image{'.$cur_topic['id'].'}" name="prefix_image{'.$cur_topic['id'].'}" /></a>';
echo'<div style="display: none; padding-bottom: 4px" id="prefix{'.$cur_topic['id'].'}" name="prefix{'.$cur_topic['id'].'}">';Normal que le javascript ne marche pas ? (les ids sont bonnes)
Hors ligne
Oui, enlève les accolades ("{" et "}"), ça peut créer des problemes. Et "prefix" est à changer par qquechose de ton choix !
Hors ligne
echo'<a href="javascript:onClick=toggle(\'btnews'.$cur_topic['id'].'\', \'btnewsimg'.$cur_topic['id'].'\'); return false;"><img src="../images/plus.gif" alt="Plus d\'informations" id="btnewsimg'.$cur_topic['id'].'" name="btnewsimg'.$cur_topic['id'].'" /></a>';
echo'<li><span id="'.$spanid.'">'.$datetopic.'</span><a href="'.PUN_ROOT.'viewtopic.php?id='.$cur_topic['id'].'">'.$subject.'</a> <a href="'.PUN_ROOT.'viewtopic.php?id='.$cur_topic['id'].'&action=new">'.$replies.'</a></li>';
echo'<div style="display: none; padding-bottom: 4px" id="btnews'.$cur_topic['id'].'" name="btnews'.$cur_topic['id'].'">';
echo'test'; }
echo '</div></ul>';
}Cela ne marche toujours pas..
Hors ligne
Déjà, il faut que ta div soit dans ton <li> !
Hors ligne
C'est vrai que ça fait déjà beaucoup plus jolie
. Je ne comprends vraiment pas pour le javascript par contre :
echo'<li><a href="javascript:onClick=toggle(\'btnews'.$cur_topic['id'].'\', \'btnewsimg'.$cur_topic['id'].'\'); return false;"><img src="../images/plus.gif" alt="Plus d\'informations" id="btnewsimg'.$cur_topic['id'].'" name="btnewsimg'.$cur_topic['id'].'" /></a>';
echo'<span id="'.$spanid.'">'.$datetopic.'</span><a href="'.PUN_ROOT.'viewtopic.php?id='.$cur_topic['id'].'">'.$subject.'</a> <a href="'.PUN_ROOT.'viewtopic.php?id='.$cur_topic['id'].'&action=new">'.$replies.'</a> <div style="display: none; padding-bottom: 4px" id="btnews'.$cur_topic['id'].'" name="btnews'.$cur_topic['id'].'">test</div></li>';
}
echo '</ul>';Hors ligne
Vraiment exceptionnel le site de la tournée, jamais vu quelque chose d'aussi abouti..
C'est clair ! Superbe boulot
Team-BoNoBo Team CS qui tourne sous Punbb, Puntal & DFSS
Trouvailles et cadeaux du web gratuits chez la dénicheuse
Besoin d'aide, visitez le groupe Developpeur
Hors ligne