Quelle fonction pour réécrire les URLs ?

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

Quelle fonction pour réécrire les URLs ?

Messagede FrenchKiss » Mar Juil 08, 2008 8:31 am

Hello,
je travaille actuellement sur le Wordpress d'un client, qui aimerait afficher la liste des X derniers topics actifs ... lesquels, je vous le donne émile, sont extraits d'un phpBB3 rewrités (advance) par les bons soins de phpBB-Seo.com (forever).

J'ai fouillé dans la class, mais c'est un peu trop orienté objet pour mes maigres connaissances et du coup, je ne parviens pas à savoir comment, à partir du titre / de l'id du topic, aboutir à la bonne URL. Dans quelle fonction faut-il balancer quels paramètres ?

Merci d'avance pour votre aide. En attendant, je continue de fouiller / tester :)
FrenchKiss
PR1
PR1
 
Messages: 105
Inscription: Ven Déc 22, 2006 8:21 pm

Publicité

Messagede dcz » Mar Juil 08, 2008 9:01 am

Ça sera beaucoup plus simple avec GYM 2.0, qui sort incessamment sous peu, en récupérant les urls réécrites a partir des flux RSS.
Si non, il vaut mieux partager les sessions de phpBB pour facilement pouvoir gérer toutes les possibilités.

Le principe, c'est comme dans viewtopic.php :

Code: Tout sélectionner
$forum_id = (int) $topic_data['forum_id'];
$topic_id = (int) $topic_data['topic_id'];
// www.phpBB-SEO.com SEO TOOLKIT BEGIN
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]);
}
if ( empty($phpbb_seo->seo_url['forum'][$topic_data['forum_id']]) ) {
   $phpbb_seo->seo_url['forum'][$topic_data['forum_id']] = $phpbb_seo->set_url($topic_data['forum_name'], $topic_data['forum_id'], $phpbb_seo->seo_static['forum']);
}
// www.phpBB-SEO.com SEO TOOLKIT END


Il faut le titre et id du sujet et du forum dans lequel il se trouve, plus le type du sujet pour les annonces globales, et envoyer le tout dans la class phpbb_seo.

Après, tu fait ton lien avec toutes les options directe :
Code: Tout sélectionner
$url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id");
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: 21407
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede FrenchKiss » Mer Juil 09, 2008 8:47 am

Salut dcz, merci pour le tuyau.
J'ai bataillé un peu, mais j'arrive à quelque chose de probant ...
en revanche, peux-tu me confirmer que l'URL ainsi produite est bien zéro-dupe, et non une simple santisation du titre transformé en URL ?

Merci ;)
FrenchKiss
PR1
PR1
 
Messages: 105
Inscription: Ven Déc 22, 2006 8:21 pm

Messagede FrenchKiss » Mer Juil 09, 2008 10:19 am

Hmm bon en fait ça déconne plein pot.
Je crois que l'include du common.php ne se fait pas :auriez-vous une idée de comment on peut tester si un include se fait correctement ?

Parce que pour couronner le tout, l'hébergeur de mon client a désactivé les messages d'erreur php ... vachement agréable de débugger à l'aveugle ...
FrenchKiss
PR1
PR1
 
Messages: 105
Inscription: Ven Déc 22, 2006 8:21 pm

Messagede dcz » Mer Juil 09, 2008 3:43 pm

Bah ouais c'est clair, si les erreurs sont complètement désactivés...

Tu 'nas pas d'accès au logs d'erreurs ? Ou tu peux pas générer un fichier texte ?

Si non, y'a toujours le bon vieux var_export().

Dans common, tu pourrais faire un ti :
Code: Tout sélectionner
var_export($config);


Voir :

echo '<pre>' . var_export($config, true) . '</pre>';

pour une plus belle mise en forme, en toute fin, si tu vois la config de phpBB, c'est que common est inclus et que la connexion à la db a bien été faite, et ainsi de suite ...

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

Messagede FrenchKiss » Ven Juil 11, 2008 8:43 am

Re :)
J'ai opté pour la solution la plus "simple" : appeler l'hébergeur et lui demander de réactiver ces messages d'erreurs.

Et du coup, j'obtiens ça :
Fatal error: Call to a member function sql_query() on a non-object in /var/www/vhosts/expatriation.com/httpdocs/forum-expat/includes/cache.php on line 51


Pour info, voici à quoi ressemble mon script :
Code: Tout sélectionner
// REQUETE SQL, faite via Wordpress et sa classe SQL
global $wpdb;
            $actifs = $wpdb->get_results("
            SELECT t.topic_id, t.topic_title, f.forum_name, f.forum_id
            FROM phpbb_topics t, phpbb_forums f
            WHERE t.forum_id = f.forum_id
            ORDER BY t.topic_last_post_id 
            DESC LIMIT 10");

// PhpBB entre en scene ...
define('IN_PHPBB', true);
            $phpbb_root_path = "/var/www/vhosts/expatriation.com/httpdocs/forum-expat/";
            $phpEx = substr(strrchr(__FILE__, '.'), 1);
            include ($phpbb_root_path . 'common.'.$phpEx);

// mon merdier ensuite

Donc voilà, l'include de common.php se fait correctement, mais à mon avis, il appelle includes/cache.php qui lui veut faire une requete en utilisant la classe $db ... qui n'est pas définie. J'ai bon m'sieur ?
Oui ok, mais dans ce cas comment faire ?
Moi je veux pas que include/cache.php me fasse des appels SQL.
Moi je veux juste formater mes URLs :(
FrenchKiss
PR1
PR1
 
Messages: 105
Inscription: Ven Déc 22, 2006 8:21 pm

Messagede dcz » Ven Juil 11, 2008 12:12 pm

Ah, bah si tu es en plus dans une session WP, c'est normal qu'il y ait des problèmes, dans ton cas il doit y avoir conflit entre la classe SQL de WP et celle de phpBB, pour faire ce que tu veux il faudrait donc n'inclure aucun script de phpBB.

Le partage de deux sessions dans un script est toujours délicat de ce point de vu, le mieux serait de te faire une classe de partage de sessions utilisant le code de WP (et donc sa classe db) et ainsi éviter de mélanger les deux codes.

Tout ça pour avoir accès aux sessions et autorisations de phpBB, s'il s'agit que de réécrire des liens publics, c'est plus simple, mais il faut quand même forcer un peut l'usage de la classe phpbb_seo. Pour cela si tu code un peu, il faut simplement renseigner un tableau $config et éventuellement renseigner un status enregistré / pas enregistré dans une classe $user, regardes le code, y'a pas tant de dépendances que ça pour l'utiliser complètement en dehors de phpBB.

Si non, y'a la solution bien plus simple avec magpie, tu récupères les liens depuis des flux RSS fait avec GYM sitemaps, comme ça t'a direct les bons et avec les autorisations si tu le souhaites. En plus avec le cache de magpie, cela n'entraîne que rarement une deuxième connexion à la db, c'est super rapide. Le cache est également l'inconvénient, il y a dans ce cas un délais pour la mise à jour des liens, mais c'est tout de même dynamique.

J'en parle plus précisément ici : http://www.phpbb-seo.com/forums/reecrit ... html#28330

;)
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: 21407
Inscription: Ven Avr 28, 2006 9:03 pm


Retourner vers Réécriture URL Avancée

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Yahoo [Bot] et 3 invités


 
cron