| |
|
| :: |
| Auteur |
Message |
charabia
Inscrit le: 24 Oct 2006 Messages: 46
|
Posté le: Mar Oct 24, 2006 6:51 pm Sujet du message: [aide] afficher les dernier sujet du forum |
|
|
Bonjour !
dcz m'a montré ce morceau de code afin d'afficher les derniers posts d'un forum sur une page externe.
| Citation: | <?php
// Last XX Active Topics outside phpBB - dcz - www.phpBB-SEO.com
// License: http://opensource.org/licenses/gpl-license.php GNU General Public License v2
//
// Basic Configuration
// How Many Topics you want to display?
$topicnumber = 30;
// Scrolling towards up or down?
$scroll = "up";
// Change this to your phpBB URL
$urlPath = "http://www.example.com/phpBB";
// Change this to your phpBB path
$phpbb_root_path = 'phpBB/';
// Exclude forums, forum id in this array will not be listed
$exclude_forum = array (
//1 => 31,
//2 => 5,
//3 => 10,
);
define('IN_PHPBB', true);
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
// Start session management
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
// End session management
// Let's do it now
$sql = "SELECT t.topic_poster,t.topic_views,t.topic_replies,t.topic_id, t.topic_title, t.topic_last_post_id, t.forum_id, p.post_id, p.poster_id, p.post_time, u.user_id, u.username ,f.forum_name
FROM ".TOPICS_TABLE." t, ".FORUMS_TABLE." f, " . POSTS_TABLE . " p, " . USERS_TABLE . " u
WHERE t.topic_id = p.topic_id
AND f.forum_id = t.forum_id
AND t.topic_status <> 2
AND p.post_id = t.topic_last_post_id
AND p.poster_id = u.user_id
ORDER BY p.post_id DESC LIMIT $topicnumber";
//Begin sql cache
if ( !($result = $db->sql_query($sql)) )
//if ( !($result = $db->sql_query($sql, false, 'posts_')) )
//End sql cache
{
message_die(GENERAL_ERROR, 'Could not obtain Last topics info', '', __LINE__, __FILE__, $sql);
}
$last_topic_data = array();
while( $row = $db->sql_fetchrow($result) )
{
$last_topic_data[] = $row;
}
$db->sql_freeresult($result);
unset($row);
// Handle the not topics case, if you want
if ( !($total_topics = count($last_topic_data)) )
{
$message = 'Something you want to say here ';
message_die(GENERAL_MESSAGE, $message);
}
//
// Find which forums are visible for this user
//
$is_auth_ary = array();
$is_auth_ary = auth(AUTH_VIEW, AUTH_LIST_ALL, $userdata, $last_topic_data);
// here I keep the basic html output
// Outcome of the HTML
// Be carefull when you edit these!
echo "<marquee dir=\"rtl\" align=\"center\" id=\"recent_topics\" behavior=\"scroll\" direction=\"$scroll\" height=\"150\" width=\"100%\" scrolldelay=\"100\" scrollamount=\"2\" onMouseOver=\"stop()\" onMouseOut=\"start()\">";
echo "<div align=\"center\">";
echo "<table cellpadding='3' cellSpacing='2'";
for ($i = 0; $i < $total_topics; $i++ )
{
if ($is_auth_ary[$last_topic_data[$i]['forum_id']]['auth_view'] && !in_array($last_topic_data[$i]['forum_id'], $exclude_forum))
{
// phpBB-SEO.com SEO TOOLKIT BEGIN
$seo_forum_name = $last_topic_data[$i]['forum_name'];
$seo_topic_name = $last_topic_data[$i]['topic_title'];
// phpBB-SEO.com SEO TOOLKIT END
echo "<tr valign='top'>
<td><span class=\"nav\">".$lang['Last_Post']." :
<a href=\"".append_sid("$urlPath/viewtopic.php?t=".$last_topic_data[$i]['topic_id'])."\" class=\"nav\">" . $last_topic_data[$i]['topic_title'] ."</span></a></td>
<td><span class=\"nav\"> ".$lang['Forum']." :
<a href=\"".append_sid("$urlPath/viewforum.php?f=".$last_topic_data[$i]['forum_id'])."\" class=\"nav\">" . $last_topic_data[$i]["forum_name"] . "</a></span></td>
<td><span class=\"nav\"> ".$lang['Views']." : " . $row['topic_views'] . "</span></td>
<td><span class=\"nav\"> ".$lang['Replies']." : " . $last_topic_data[$i]['topic_replies'] . "</span></a></td>
<td><span class=\"nav\"> ".$lang['Poster']." :
<a href=\"".append_sid("$urlPath/profile.php?mode=viewprofile&u=".$last_topic_data[$i]['user_id'])."\" class=\"nav\" >" . $last_topic_data[$i]['username'] . "</a></td></tr>";
}
}
echo "</table></div></marquee>";
?> |
Je voudrais la requête la plus simple possible afin de toucher le serveur le moins possible. Je voudrais afficher le titre du post, l'auteur, le nb de réponses, la date et une icone pour atteindre le dernier post du topic...et tout ceci avec une seule requête. Est-ce faisable ou juste dans mes rêves ?
Le MOD topic anywhere étant un bouffeur de ressource monstreux, je cherche le moyen de faire la même chose beaucoup plus léger.
Merci pour votre aide ! |
|
|
| Revenir en haut de page |
|
 |
|
 |
dcz Administrateur - Site Admin

Inscrit le: 28 Avr 2006 Messages: 13354
|
|
| Revenir en haut de page |
|
 |
charabia
Inscrit le: 24 Oct 2006 Messages: 46
|
Posté le: Mar Oct 24, 2006 6:57 pm Sujet du message: Re: [aide] afficher les dernier sujet du forum |
|
|
oui je l'ai testé J'ai réussi à le faire afficher comme il faut.
Il ne manque en effet que le lien vers le dernier post, mais il y a aussi l'affichage du nom du forum dont je n'ai pas besoin. Je ne sais pas si on peut alléger le code vu que l'on en n'a pas besoin.
mici  |
|
|
| Revenir en haut de page |
|
 |
dcz Administrateur - Site Admin

Inscrit le: 28 Avr 2006 Messages: 13354
|
Posté le: Mar Oct 24, 2006 8:37 pm Sujet du message: Re: [aide] afficher les dernier sujet du forum |
|
|
Alors pour les infos du forum :
Remplacer :
| Code: | $sql = "SELECT t.topic_poster,t.topic_views,t.topic_replies,t.topic_id, t.topic_title, t.topic_last_post_id, p.post_id, p.poster_id, p.post_time, u.user_id, u.username ,f.forum_name
FROM ".TOPICS_TABLE." t, ".FORUMS_TABLE." f, " . POSTS_TABLE . " p, " . USERS_TABLE . " u
WHERE t.topic_id = p.topic_id
AND f.forum_id = t.forum_id
AND t.topic_status <> 2
AND p.post_id = t.topic_last_post_id
AND p.poster_id = u.user_id
ORDER BY p.post_id DESC LIMIT $topicnumber"; |
Par :
| Code: | $sql = "SELECT t.topic_poster,t.topic_views,t.topic_replies,t.topic_id, t.topic_title, t.topic_last_post_id, t.forum_id, p.post_id, p.poster_id, p.post_time, u.user_id, u.username
FROM ".TOPICS_TABLE." t, " . POSTS_TABLE . " p, " . USERS_TABLE . " u
WHERE t.topic_id = p.topic_id
AND t.topic_status <> 2
AND p.post_id = t.topic_last_post_id
AND p.poster_id = u.user_id
ORDER BY p.post_id DESC LIMIT $topicnumber"; |
Et effacer :
| Code: | <td><span class=\"nav\"> ".$lang['Forum']." :
<a href=\"".append_sid("$urlPath/viewforum.php?f=".$last_topic_data[$i]['forum_id'])."\" class=\"nav\">" . $last_topic_data[$i]["forum_name"] . "</a></span></td> |
Pour le lien vers le dernier message, tu veux un lien en plus, genre avec la petite image de phpBB, ou juste l'URL du lien qui existe pour le sujet vers le dernier message ?
++ |
_________________ Useful links :
SEO Forum || SEO Directory || SEO phpBB || SEO phpBB3 || Search
____________________
Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Référencement phpBB3 || Recherche |
|
| Revenir en haut de page |
|
 |
charabia
Inscrit le: 24 Oct 2006 Messages: 46
|
Posté le: Mar Oct 24, 2006 8:41 pm Sujet du message: Re: [aide] afficher les dernier sujet du forum |
|
|
Je voudrais une tite image à côté du titre du sujet qui pointe vers le dernier post de ce sujet. Exactement comme topic anywhere en fait.
Le lien du titre qui pointe vers le sujet et l'image vers le dernier post du sujet
Merci beaucoup !! |
|
|
| Revenir en haut de page |
|
 |
dcz Administrateur - Site Admin

Inscrit le: 28 Avr 2006 Messages: 13354
|
Posté le: Mar Oct 24, 2006 9:06 pm Sujet du message: Re: [aide] afficher les dernier sujet du forum |
|
|
Alors :
Trouver :
| Code: | $seo_topic_name = $last_topic_data[$i]['topic_title'];
|
Ajouter après :
| Code: | | $start = (ceil($last_topic_data[$i]['forum_id'] / $board_config['posts_per_page'])> 1) ? "&start=" . $paginated * $pages : ''; |
Trouver :
| Code: | <td><span class=\"nav\">".$lang['Last_Post']." :
<a href=\"".append_sid("$urlPath/viewtopic.php?t=".$last_topic_data[$i]['topic_id'])."\" class=\"nav\">" . $last_topic_data[$i]['topic_title'] ."</span></a></td> |
Remplacer par :
| Code: | | echo "<a href=\"".append_sid("$urlPath/profile.php?mode=viewprofile&u=".$last_topic_data[$i]['user_id'])."\" class=\"lien-bleu\" >" . $last_topic_data[$i]['username'] . "</a>, ".$date_last_post." <a href=\"" . append_sid("$urlPath/viewtopic.php?p=".$last_topic_data[$i]['topic_last_post_id'] . $start) . "#" . $last_topic_data[$i]['topic_last_post_id'] . "\"><img src=\"" . $urlPath . "/" . $images['icon_latest_reply'] . "\" alt=\"". $lang['View_latest_post'] . "\" border=\"0\"></a> |
J'ai pas testé, mais ce doit être ça, je te laisse peaufiner le style à ta guise
++ |
_________________ Useful links :
SEO Forum || SEO Directory || SEO phpBB || SEO phpBB3 || Search
____________________
Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Référencement phpBB3 || Recherche
Dernière édition par dcz le Mer Oct 25, 2006 10:11 am; édité 1 fois |
|
| Revenir en haut de page |
|
 |
charabia
Inscrit le: 24 Oct 2006 Messages: 46
|
Posté le: Mar Oct 24, 2006 9:11 pm Sujet du message: Re: [aide] afficher les dernier sujet du forum |
|
|
Je teste ça et je te tiens au courant
En tout cas merci beaucoup et chapô bas pour ta rapidité et ton efficacité !
Je voudrais avoir ton avis, pourquoi topic anywhere a cherché quelque chose utilisant tant de ressources alors qu'il est possible de le faire avec une unique requête ?
Là ton code ne doit rien consommer du tout j'imagine au niveau requêtes sur serveur non ? |
|
|
| Revenir en haut de page |
|
 |
dcz Administrateur - Site Admin

Inscrit le: 28 Avr 2006 Messages: 13354
|
|
| Revenir en haut de page |
|
 |
charabia
Inscrit le: 24 Oct 2006 Messages: 46
|
Posté le: Mar Oct 24, 2006 9:18 pm Sujet du message: Re: [aide] afficher les dernier sujet du forum |
|
|
Ah bé voui j'y avais pas pensé J'étais resté sur le même site lol
Je viens de tester ton code, nickel chrome
Merci beaucoup !
Bonne soirée ! |
|
|
| Revenir en haut de page |
|
 |
charabia
Inscrit le: 24 Oct 2006 Messages: 46
|
Posté le: Mar Oct 24, 2006 9:21 pm Sujet du message: Re: [aide] afficher les dernier sujet du forum |
|
|
Oups juste une chose, sais-tu où je dois aller pour enlever les "Derniers Messages", "Vus", "Réponses" et ""Poster" ?
Zut hihi j'ai pas vu qu'il manquait la date aussi :p Si ce n'est pas trop abusé
Je n'ai rien vu dans la page.
Mici ! |
|
|
| Revenir en haut de page |
|
 |
charabia
Inscrit le: 24 Oct 2006 Messages: 46
|
Posté le: Mar Oct 24, 2006 9:32 pm Sujet du message: Re: [aide] afficher les dernier sujet du forum |
|
|
Zut je ne peux pas effacer mes messages.
J'ai pas tout vérifié...en fait comme tu l'avais dit au début les SESSIONS bousillent mon forum mais l'affichage des 10 posts est ok sur mon index.
Tu peux me dire comment virer ce système de sessions pour l'affichage des latest news ?
Merci  |
|
|
| Revenir en haut de page |
|
 |
dcz Administrateur - Site Admin

Inscrit le: 28 Avr 2006 Messages: 13354
|
|
| Revenir en haut de page |
|
 |
charabia
Inscrit le: 24 Oct 2006 Messages: 46
|
Posté le: Mer Oct 25, 2006 6:49 am Sujet du message: Re: [aide] afficher les dernier sujet du forum |
|
|
Non non du tout dcz Cette portion des 10 posts se trouve sur la page index de mon site et non du forum. Mais quand je met le morceau des sessions au niveau de ma page index, l'affichage est nickel, par contre quand je vais sur mon forum ensuite tout est cassé...
Je pense qu'il faut ne pas utiliser les sessions à ce niveau là non ? En fait c'est juste utile pour afficher les intitulés non ?
Mici  |
|
|
| Revenir en haut de page |
|
 |
dcz Administrateur - Site Admin

Inscrit le: 28 Avr 2006 Messages: 13354
|
|
| Revenir en haut de page |
|
 |
charabia
Inscrit le: 24 Oct 2006 Messages: 46
|
Posté le: Mer Oct 25, 2006 8:40 am Sujet du message: Re: [aide] afficher les dernier sujet du forum |
|
|
Houlàlà je viens de voir que c'est parce qu'il y avait deux slashs, c'est ça qui causait le problème.
En fait à quoi sert les sessions dans mon cas ? Je peux les enlever sans pb non ?
mici ! |
|
|
| Revenir en haut de page |
|
 |
|
|
| Navigation |
Autres sujets de discussion |
|
|
|
|
|
|
|