[aide] afficher les dernier sujet du forum

Forum consacré aux codes conseillés ou mis à disposition sur phpBB SEO. Support, téléchargements, conseils ...

Modérateur: Modérateurs

[aide] afficher les dernier sujet du forum

Messagede charabia » Mar Oct 24, 2006 6:51 pm

Bonjour !

dcz m'a montré ce morceau de code afin d'afficher les derniers posts d'un forum sur une page externe.

<?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 !
charabia
PR0
PR0
 
Messages: 66
Inscription: Mar Oct 24, 2006 7:34 am

Publicité

Messagede dcz » Mar Oct 24, 2006 6:54 pm

Dans celui là il ne manque que le liens vers le dernier message, tu l'as testé ?

Notes qu'il inclus le partage de sessions avec phpBB, donc il faut le modifier un peut si tu dois afficher ça dans une page qui les partageraient déjà.

Et bien entendu, c'est utilisable que sur le même serveur.

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21325
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede charabia » Mar Oct 24, 2006 6:57 pm

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 :)
charabia
PR0
PR0
 
Messages: 66
Inscription: Mar Oct 24, 2006 7:34 am

Messagede dcz » Mar Oct 24, 2006 8:37 pm

Alors pour les infos du forum :

Remplacer :

Code: Tout sélectionner
$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: Tout sélectionner
$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: Tout sélectionner
<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 || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21325
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede charabia » Mar Oct 24, 2006 8:41 pm

:D

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 !!
charabia
PR0
PR0
 
Messages: 66
Inscription: Mar Oct 24, 2006 7:34 am

Messagede dcz » Mar Oct 24, 2006 9:06 pm

Alors :

Trouver :

Code: Tout sélectionner
$seo_topic_name = $last_topic_data[$i]['topic_title'];


Ajouter après :

Code: Tout sélectionner
$start = (ceil($last_topic_data[$i]['forum_id'] / $board_config['posts_per_page'])> 1) ? "&amp;start=" . $paginated * $pages : '';


Trouver :

Code: Tout sélectionner
<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: Tout sélectionner
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 ;)

++
Dernière édition par dcz le Mer Oct 25, 2006 10:11 am, édité 1 fois.
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21325
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede charabia » Mar Oct 24, 2006 9:11 pm

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 ?
charabia
PR0
PR0
 
Messages: 66
Inscription: Mar Oct 24, 2006 7:34 am

Messagede dcz » Mar Oct 24, 2006 9:13 pm

Et bien, c'est qu'il permet de faire un export sur toute page du oueb, pas que sur les pages qui partagent le même serveur que l'installation phpBB.

Mais c'est en même temps sont point faible, car plus on exporte de liens, plus on consomme, mais ça rend service aussi, il faut juste en connaître les limites.

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21325
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede charabia » Mar Oct 24, 2006 9:18 pm

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 !
charabia
PR0
PR0
 
Messages: 66
Inscription: Mar Oct 24, 2006 7:34 am

Messagede charabia » Mar Oct 24, 2006 9:21 pm

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 !
charabia
PR0
PR0
 
Messages: 66
Inscription: Mar Oct 24, 2006 7:34 am

Messagede charabia » Mar Oct 24, 2006 9:32 pm

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 ;)
charabia
PR0
PR0
 
Messages: 66
Inscription: Mar Oct 24, 2006 7:34 am

Messagede dcz » Mar Oct 24, 2006 10:44 pm

ahh mais tu met ça sur l'index de phpBB ?

C'est vraiment pas fait pour, il y a des mod tout fait pour ça ;)
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21325
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede charabia » Mer Oct 25, 2006 6:49 am

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 ;)
charabia
PR0
PR0
 
Messages: 66
Inscription: Mar Oct 24, 2006 7:34 am

Messagede dcz » Mer Oct 25, 2006 8:32 am

Ahh bah non, aucun liens à priori, que veux tu dire par cassé ?

Un lien ?

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21325
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede charabia » Mer Oct 25, 2006 8:40 am

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 !
charabia
PR0
PR0
 
Messages: 66
Inscription: Mar Oct 24, 2006 7:34 am

Suivante

Retourner vers MODS phpBB2 SEO

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités