Afficher les derniers posts en php sur une page externe

Le forum de support du mod de réécriture d'URL pour phpBB3 en version Avancée.
Ce mod de réécriture d'url injecte les titres forums et des sujets dans leurs URLs.

Modérateur: Modérateurs

Afficher les derniers posts en php sur une page externe

Messagede yazerty » Mer Jan 16, 2008 10:03 pm

Bonsoir,

Avec phpbb2 j'affichais les derniers posts de mon forum sur une page extérieure au forum (ma page d'accueil). J'étais en mode simple et ajoutais simplement le numéro du topic à la fin d'une url type de sujet (ex : -exemple.com/forum/topic$id.html)

J'aimerais tout simplement faire la même chose avec phpbb3 mais cette fois ci en mode avancé. La chose m'impose donc de fait de passer par la fonction de phpbb seo permettant de "convertir" les urls.

Je ne suis pas sûr de la bonne utilisation de la chose, mais j'ai un autre problème avant celui là :-/.

Voici mon code :

Code: Tout sélectionner
// Connexion à la BDD
(...)

// Change this to your phpBB URL
$urlPath = "http://www.exemple.com/forum";
// Change this to your phpBB path
$phpbb_root_path = './forum/';
define('IN_PHPBB', true);
include($phpbb_root_path . 'phpbb_seo/phpbb_seo_class.php');
include($phpbb_root_path . 'common.php');

// Sélection des 10 derniers posts

$sql = "SELECT PST.post_subject, PST.post_text, PST.poster_id, PST.post_time, U.username
FROM phpbb3_posts PST, phpbb3_users U
WHERE U.username = PST.poster_id
GROUP BY PST.topic_id
ORDER BY PST.post_time ASC
LIMIT 10";

$req = mysql_query($sql) or die(mysql_error());

// Boucle d'affichage du post
while($db_data = mysql_fetch_assoc($req)) {

// Titre du post
$post_title = $db_data['post_subject'];

// Url du post
$topic_id = $db_data['topic_id'];
if ( empty($phpbb_seo->seo_url['topic'][$topic_id]) ) {
   if ($topic_data['topic_type'] == POST_GLOBAL) {
      $phpbb_seo->seo_opt['topic_type'][$topic_id] = POST_GLOBAL;
   }
   $phpbb_seo->seo_censored[$topic_id] = censor_text($topic_data['topic_title']);
   $phpbb_seo->seo_url['topic'][$topic_id] = $phpbb_seo->format_url($phpbb_seo->seo_censored[$topic_id]);
}
$post_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "t=$topic_id");



Le message suivant s'affiche :
The config. file could not be found.

Click here to install phpBB


J'imagine bien que c'est dans la déclaration de mes fichiers de base que ça bug, mais je ne vois pas comment rectifier la chose afin de rebidouiller ça dans le bon sens.

Pourriez-vous m'aider à biduler le trublion dans le bon sens s'il vous plait :) ?

ps : en plus je pense que ça pourra intéresser quelques personnes 8) ...
yazerty
PR1
PR1
 
Messages: 180
Inscription: Lun Oct 30, 2006 1:13 am

Publicité

Messagede dcz » Ven Jan 18, 2008 9:42 am

Donc, pas besoin d'inclure la classe phpBB SEO si tu inclus common.php, ce sera déjà fait.

Pour ton problème de chemins, tu utilises bien ce script à la racine d'un domaine, avec phpBB installé dans le dossier forum/ ?

Vu que tu inclus common.php, tu devrais aussi en profiter pour utiliser la classe db de phpBB, voir pour lancer une sessions utilisateur.

Enfin, pour les url, si tu veux des urls de sujets, il faudrait faire une autre jointure sur la table des sujets, pour récupérer le type de sujet ($topic_data['topic_type']) et sont titre ($topic_data['topic_title']), voir, aussi le titre et l'id du forum pour bien faire, même si le cache du mod permettra quand même l'injection des url de forum en cache au besoin.

Le but pour être universel, c'est :
Code: Tout sélectionner
$post_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id");


Donc, pour la requête, tu peux commencé par la table des sujets, vu qu'il y a les infos pour savoir quels sont les plus récentes, joindre la table des forums pour le titre du forum, et joindre la table des posts uniquement si tu veux aussi afficher le contenu de ceux ci.

++
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: 21398
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede yazerty » Ven Jan 18, 2008 11:48 am

J'essaie d'avancer pas à pas...

j'aboutis à cette requête :

Code: Tout sélectionner
// Sélection des 10 derniers posts
$sql = "SELECT T.topic_id, T.forum_id, T.topic_title, T.topic_type, T.topic_first_poster_name, T.topic_time, P.post_text
FROM phpbb3_topics T, phpbb3_posts P
WHERE P.post_id = T.topic_last_post_id
ORDER BY T.topic_id DESC
LIMIT 10";


Ca semble afficher ce que je veux :). (et ce qu'il faut pour faire par la suite une réécriture d'url avec tous les éléments nécessaires :) )

Lancer une session utilisateur dès la page d'accueil me plairait peut-être :). Je verrai ça un peu plus tard par contre (c'est plus un effet de style qu'autre chose car comme mon site se résume au forum les membres sont très souvent sur le forum et peu souvent sur la page d'accueil en pratique...).

Par contre j'ai toujours un problème avec l'inclusion du fichier common :x .

Tu as parfaitement compris mon environnement :

- page index.php à la racine, sur laquelle je veux afficher les derniers posts. Dans cette page index.php je fais un include('lasts.php') (pour clarifier le code).

- page lasts.php située à la racine également.

- forum situé dans un répertoire "/forum" à partir de la racine.

Et donc quand je fais ceci :

Code: Tout sélectionner
// Environnement
$urlPath = "http://www.exemple.com/forum";
$phpbb_root_path = './forum/';
define('IN_PHPBB', true);
include($phpbb_root_path . 'common.php');


Cela m'affiche :

The config. file could not be found.

Click here to install phpBB


Je ne vois pas ce qui peut buguer dans ce code là :- ?
yazerty
PR1
PR1
 
Messages: 180
Inscription: Lun Oct 30, 2006 1:13 am

Messagede dcz » Ven Jan 18, 2008 2:10 pm

Je viens de comprendre, tu n'as pas déclaré $phpEx.

Ajoutes juste :

Code: Tout sélectionner
$phpEx = 'php';


avant l'include ;)

++
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: 21398
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede yazerty » Ven Jan 18, 2008 4:11 pm

Bien vu :D !!

Par contre j'ai un bug étrange dans la génération des urls "rewrittées" : les accents sont remplacés par des "-" sur ma page index.php (ex : "succ-s-m-rit-), mais ça redirige ensuite sur la bonne url, à savoir une url ou les lettres accentuées sont transformées en lettres sans accents (ex : "succes-merite").

Pourtant j'utilise la fonction sans modif :

Code: Tout sélectionner
// Données du topic
$topic_title = $topic_data['topic_title'];
$forum_id = $topic_data['forum_id'];
$topic_id = $topic_data['topic_id'];

// Url du post
if ( empty($phpbb_seo->seo_url['topic'][$topic_id]) ) {
   if ($topic_data['topic_type'] == POST_GLOBAL) {
      $phpbb_seo->seo_opt['topic_type'][$topic_id] = POST_GLOBAL;
   }
   $phpbb_seo->seo_censored[$topic_id] = censor_text($topic_data['topic_title']);
   $phpbb_seo->seo_url['topic'][$topic_id] = $phpbb_seo->format_url($phpbb_seo->seo_censored[$topic_id]);
}
$post_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id");


Je suis persuadé d'avoir trouvé cette fonction dans un fichier du premod en cherchant à savoir comment marchait le système de rewritting, mais je n'arrive pas à retrouver l'endroit où je l'avais trouvé pour voir si ce code est bien le bon :-/.
yazerty
PR1
PR1
 
Messages: 180
Inscription: Lun Oct 30, 2006 1:13 am

Messagede yazerty » Sam Jan 19, 2008 12:32 pm

Aaah je crois que c'est bon, il me manquait un mysql_query('SET NAMES utf8'); pour que ma requête ressorte sous le bon formattage. C'est vrai qu'on est passé à l'utf8 avec phpbb3 :)... !
yazerty
PR1
PR1
 
Messages: 180
Inscription: Lun Oct 30, 2006 1:13 am

Messagede yazerty » Sam Jan 19, 2008 3:50 pm

Je confirme que ça semble parfaitement bien marcher comme ça maintenant :) !

MERCI pour ton aide dcz !!
yazerty
PR1
PR1
 
Messages: 180
Inscription: Lun Oct 30, 2006 1:13 am

Messagede YoyoS » Jeu Aoû 14, 2008 6:22 pm

EDIT: a supprimer , sorry c'était une bête question ^^
YoyoS
PR0
PR0
 
Messages: 54
Inscription: Lun Oct 09, 2006 11:00 pm

Messagede lemoussel » Ven Aoû 15, 2008 12:47 pm

yazerty,

Etant intéressé par ton script, pourrais tu le mettre à dispo ?

Merci.
Webmaster du forum L'itonScope. Le forum où l'on parle de tout et de rien !
Prévisions météo des départements de France .
Avatar de l’utilisateur
lemoussel
PR1
PR1
 
Messages: 113
Inscription: Ven Juil 18, 2008 6:42 am
Localisation: Haute-Normandie, Arnières sur Iton

Messagede YoyoS » Ven Aoû 15, 2008 4:40 pm

Tiens lemoussel, j'ai justement bossé dessus hier, si ça peut t'aider
http://www.tutomaker.com/forum/mod-topi ... -t404.html
YoyoS
PR0
PR0
 
Messages: 54
Inscription: Lun Oct 09, 2006 11:00 pm

Messagede lemoussel » Sam Aoû 16, 2008 7:10 am

Merci :D

Et voilà le résultat : http://www.ville-arnieressuriton.fr/lastposts.php

Reste plus qu'a intègrer le tout dans la page d'accueil du site.
Webmaster du forum L'itonScope. Le forum où l'on parle de tout et de rien !
Prévisions météo des départements de France .
Avatar de l’utilisateur
lemoussel
PR1
PR1
 
Messages: 113
Inscription: Ven Juil 18, 2008 6:42 am
Localisation: Haute-Normandie, Arnières sur Iton

Messagede YoyoS » Sam Aoû 16, 2008 9:19 am

Pas mal, t'as fait le plus dur à mon avis :mrgreen:
YoyoS
PR0
PR0
 
Messages: 54
Inscription: Lun Oct 09, 2006 11:00 pm

Messagede SeO » Sam Aoû 16, 2008 9:34 am

Il y a aussi la solution en passant par les flux de GYM sitemaps & RSS qui est assez simple, exemple :
http://phpbb3.phpbb-seo.net/demo/rss-links.php
http://phpbb3.phpbb-seo.net/demo/rss-messages.php


;)
SeO
Admin
Admin
 
Messages: 6334
Inscription: Mer Mar 15, 2006 9:41 pm

Messagede lemoussel » Sam Aoû 16, 2008 2:55 pm

Je ne peux essayer ces scripts car il me manque functions_demo.php.

Par ex. dans le script rss-links.php il y a :
Code: Tout sélectionner
include($phpbb_root_path . 'demo/functions_demo.' . $phpEx);
Webmaster du forum L'itonScope. Le forum où l'on parle de tout et de rien !
Prévisions météo des départements de France .
Avatar de l’utilisateur
lemoussel
PR1
PR1
 
Messages: 113
Inscription: Ven Juil 18, 2008 6:42 am
Localisation: Haute-Normandie, Arnières sur Iton

Messagede dcz » Lun Aoû 18, 2008 9:26 am

En fait, c'est un exemple, le but n'est pas de reproduire cette page exactement.

Le code inclus ne sert qu'a afficher la source de l'exemple.

Donc, le principe, c'est d'ajouter le code situé entre les commentaires :
Code: Tout sélectionner
// GYM Sitemaps & RSS agregator


avant :

Code: Tout sélectionner
page_header(


et d'ajouter :

Code: Tout sélectionner
<!-- INCLUDE gym_link_body.html -->


dans le template correspondant au fichier (index_body.html si tu ajoutes ce code dans index.php etc ...) à l'endroit ou tu veux afficher la liste.

C'est toujours le même principe, peut importe la page et peut importe les options.

++
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: 21398
Inscription: Ven Avr 28, 2006 9:03 pm

Suivante

Retourner vers Réécriture URL Avancée

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

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


 
cron