Récupérer les urls des derniers sujets dans un autre script

Le forum de support du mod rewrite phpBB SEO Avancé.
Ce mod de réécriture d'url injecte les titres des catégories, forums et sujets dans leurs URLs.

Modérateur: Modérateurs

Messagede trefle » Jeu Juil 31, 2008 3:00 pm

Pour le flux rss il faut prendre la versin de GYM adapté à ton forum

http://www.phpbb-seo.com/forums/gym-sit ... -vt30.html ( pour phpbb2 )

http://www.phpbb-seo.com/forums/gym-sit ... t3136.html ( phpbb3 )

Trefle.
Aider, résoudre et prévenir sont les maitres mots du forum "les arnaques".
Pour que vos formalités, ventes et achats se passent sans problèmes nous déployons nos forces pour vous offrir une médiation simple et rapide avec les principaux acteurs du commerces en ligne.
La prévention et la dénonciation d'arnaques avérées font également parties de nos prérogatives. http://forum.lesarnaques.com http://www.lesarnaques.com
trefle
PR6
PR6
 
Messages: 655
Inscription: Mar Juin 03, 2008 5:46 pm

Publicité

Messagede SeO » Jeu Juil 31, 2008 3:51 pm

thegigistouch a écrit:Qu'entends tu par "ne partage pas le code"?


$sql->requete n'est pas une méthode de phpBB, donc, j'en déduis que tu ne cherche pas a afficher cette liste depuis une page de phpBB.

Pour la réécriture, c'est pas tant les cas particulier qui sont compliqué que le cas général avec toutes les options possible.

Regardes dans phpbb_seo_class.php et dans viewtopic.php après :

Code: Tout sélectionner
$topic_id = (int) $topic_data['topic_id'];


pour voir comment sont appelée les deux méthodes principales de la réécriture, phpbb_seo::format_url et append_sid() :
Code: Tout sélectionner
// 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


ensuite, une url de sujet c'est :
Code: Tout sélectionner
$viewtopic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id&start=$start);

Et une de forum :
Code: Tout sélectionner
$viewforum_url = append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=$forum_id&start=$start);


Pour un résultats réécrit comme il faut à tous les coups.
SeO
Admin
Admin
 
Messages: 6333
Inscription: Mer Mar 15, 2006 9:41 pm

Messagede thegigistouch » Mer Aoû 06, 2008 8:34 am

Après quelques recherches, voici la fonction de réecriture d'URL recuperée depuis phpbb_seo.class.php.

Attention, dans le cas de mon forum l'adresse est de forme
Code: Tout sélectionner
http://forum.example.org/nom-topic-t22.html
, ce code necessitera donc quelques adaptations pour une autre forme de réecriture...

Code: Tout sélectionner
private function _rewriteUrl($url = "", $type,  $firstId, $lastId = ""){
         
    //remove [] from url
    $url = preg_replace('`\[.*\]`U','',$url);
    //convert html caracters (e -> &ecute;)
    $url = htmlentities($url, ENT_COMPAT, "utf-8");
    //convert html entities to unaccentuated values (&ecute; -> e)
    $url = preg_replace( '`&([a-z]+)(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i', "\\1", $url );
     
    $url_pattern = Array('`&(amp;|#)?[a-z0-9]+;`i',
                                '`[^a-z0-9]`i',
                                '`(^|-)[a-z0-9]{1,2}(?=-|$)`i',
                                '`[-]+`');
           
    $url = preg_replace( $url_pattern , '-', $url);
    $url = strtolower(trim($url, '-'));
           
    if ($type == "post") {
        $url .= "-t" . $firstId . ".html";
    if ($lastId != "")
        $url .= "#p" . $lastId;
    } else if ($type == "forum") {
        $url .= "-f" . $firstId . ".html";
    }
           
    return($url);
}


La fonction s'appelle de la manière suivante:

Code: Tout sélectionner
$newUrl = _rewriteUrl("Comment tester la fonction de réecriture d'url?","topic", "22","4");


et produira le resultat suivant:
Code: Tout sélectionner
/comment-tester-fonction-reecriture-url-t22.html#4


Hope it helps! ;)

GiGi
thegigistouch
 
Messages: 3
Inscription: Jeu Juil 31, 2008 2:33 pm

Messagede dcz » Mer Aoû 06, 2008 9:35 am

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

Messagede Cam » Dim Oct 26, 2008 6:36 pm

Bonsoir,
Désolé de faire remonter ce sujet, mais je viens de tomber dessus (via une recherche par google), je souhaite également ajouter les derniers messages postés sur un forum sur le site

Site : -http://www.fond-ecran-gratuit.biz/
Forum : -http://www.fond-ecran-gratuit.biz/forum


Je me suis donc inspiré du code dans le 1er message et je l'ai modifié via les instructions du 2e message

j'ai donc ceci :
Code: Tout sélectionner
<?php
// www.phpBB-SEO.com SEO TOOLKIT BEGIN
include('forum/phpbb_seo/phpbb_seo_class.php');
$phpbb_seo = new phpbb_seo();
$phpbb_seo->seo_path['phpbb_script'] = 'forum/';
$phpbb_seo->seo_path['root_url'] = 'http://www.fond-ecran-gratuit.biz/';
$phpbb_seo->seo_path['phpbb_url'] = $phpbb_seo->seo_path['root_url'] . $phpbb_seo->seo_path['phpbb_script'];
$phpbb_seo->seo_url['user'] = $this->seo_static['user'] = 'membre';
// www.phpBB-SEO.com SEO TOOLKIT END


// Connexion à la BDD
$db = .......;
   
// Sélection des 5 derniers posts

$sql = "SELECT TP.topic_id, TP.topic_title, PT.post_text, PST.post_time, PST.poster_id, PST.post_username, US.username

FROM phpbb_topics TP, phpbb_posts_text PT, phpbb_posts PST, phpbb_users US

WHERE PT.post_id = TP.topic_first_post_id
AND PST.post_id = TP.topic_first_post_id
AND US.user_id = TP.topic_poster

GROUP BY TP.topic_id
ORDER BY TP.topic_id DESC
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
// www.phpBB-SEO.com SEO TOOLKIT BEGIN
$post_title = "<a href=\"" . $phpbb_seo->seo_path['phpbb_url'] . $phpbb_seo->format_url($db_data['topic_title']) . $phpbb_seo->seo_delim['topic'] . $db_data['topic_id'] . $phpbb_seo->seo_ext['topic'] . "\">" . $db_data['topic_title'] . "</a>";
// www.phpBB-SEO.com SEO TOOLKIT END

// Extrait du post
$post = $db_data['post_text'];
$max_caracteres = 400;
if (strlen($post)>$max_caracteres) {
   $max_caracteres=strrpos(substr($post, 0, $max_caracteres), " ");
   $post = substr($post, 0, $max_caracteres);
   $post .= " (...)";
}
     
$post = preg_replace("(\[.*\])U","",$post );
$poster = "<a href=\"" . $phpbb_seo->seo_path['phpbb_url'] . $phpbb_seo->seo_static['user'] . $db_data['poster_id'] . $phpbb_seo->seo_ext['user'] . "\" class=\"nav\" >".$db_data['username']."</a>";
$post_time = strftime("%A %e %B @ %H:%M", $db_data['post_time']+(0));

echo "<p align=\"left\">$post_title, by $poster, $post_time<br />
$post</p>";

}
?>


Mais comment je dois mettre les info ici :
Code: Tout sélectionner
// Connexion à la BDD
$db = .......;



?

Merci pour votre aide :)
Bonne soirée
Cam
 
Messages: 34
Inscription: Ven Mai 25, 2007 10:59 am

Messagede Cam » Lun Oct 27, 2008 4:44 pm

Bonsoir,
Personne n'a une idée ? (cf. post précédent)

Merci d'avance pour votre aide :)
Cam
 
Messages: 34
Inscription: Ven Mai 25, 2007 10:59 am

Messagede Cam » Mer Oct 29, 2008 11:48 am

Bonjour,
La réponse se trouve ici :
http://www.sinuscom.org/forums/index.ph ... c=1240&hl=
Cam
 
Messages: 34
Inscription: Ven Mai 25, 2007 10:59 am

Précédente

Retourner vers mod Rewrite Avancé phpBB2

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

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


 
cron