IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

phpBB2 : Partager une base de données entre plusieurs forums

Image non disponible


précédentsommairesuivant

VI. Correction du référencement

Puisque nous sommes en train de déplacer le contenu d'un site à l'autre, il est bon de penser au suivi des liens déjà référencés. Cela fait toujours mauvaise figure d'avoir un lien mort, surtout lorsqu'on peut y remédier…

VI-A. Lecture d'un forum déplacé

Dans le script suivant :

  • viewforum.php
Chercher :
Sélectionnez
if ( !($forum_row = $db->sql_fetchrow($result)) )
{
    message_die(GENERAL_MESSAGE, 'Forum_not_exist');
}
Remplacer par :
Sélectionnez
if ( !($forum_row = $db->sql_fetchrow($result)) )
{
    $sql = 'SELECT site_uri, f.forum_id
            FROM ' . ALL_SITES_TABLE . ' s
            INNER JOIN ' . ALL_CATEGORIES_TABLE . ' c ON c.site_id = s.site_id
            INNER JOIN ' . ALL_FORUMS_TABLE . ' f ON f.cat_id = c.cat_id
            WHERE f.forum_id = ' . $forum_id;

    if ( !($result = $db->sql_query($sql)) )
    {
        message_die(GENERAL_ERROR, "Could not obtain forum information", '', __LINE__, __FILE__, $sql);
    }

    if( $forum_topic_data = $db->sql_fetchrow($result) )
    {
        header('HTTP/1.0 301 Moved Permanently');
        header('Location: ' . $forum_topic_data['site_uri'] . "viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id");
    }

    message_die(GENERAL_MESSAGE, 'Forum_not_exist');
}

VI-B. Lecture d'un sujet ou d'un message déplacé

Dans le script suivant :

  • viewtopic.php
Chercher :
Sélectionnez
if ( !($forum_topic_data = $db->sql_fetchrow($result)) )
{
    message_die(GENERAL_MESSAGE, 'Topic_post_not_exist');
}
Remplacer par :
Sélectionnez
if ( !($forum_topic_data = $db->sql_fetchrow($result)) )
{
    if($post_id)
    {
        $sql = 'SELECT site_uri, t.topic_id
                FROM ' . ALL_SITES_TABLE . ' s
                INNER JOIN ' . ALL_CATEGORIES_TABLE . ' c ON c.site_id = s.site_id
                INNER JOIN ' . ALL_FORUMS_TABLE . ' f ON f.cat_id = c.cat_id
                INNER JOIN ' . ALL_TOPICS_TABLE . ' t ON t.forum_id = f.forum_id
                INNER JOIN ' . ALL_POSTS_TABLE . ' p ON p.topic_id = t.topic_id
                WHERE p.post_id = ' . $post_id;

        if ( !($result = $db->sql_query($sql)) )
        {
            message_die(GENERAL_ERROR, "Could not obtain topic information", '', __LINE__, __FILE__, $sql);
        }

        if( $forum_topic_data = $db->sql_fetchrow($result) )
        {
            header('HTTP/1.0 301 Moved Permanently');
            header('Location: ' . $forum_topic_data['site_uri'] . "viewtopic.$phpEx?" . POST_TOPIC_URL . "=" . $forum_topic_data['topic_id'] . "#$post_id");
        }
    }
    else
    {
        $sql = 'SELECT site_uri, t.topic_id
                FROM ' . ALL_SITES_TABLE . ' s
                INNER JOIN ' . ALL_CATEGORIES_TABLE . ' c ON c.site_id = s.site_id
                INNER JOIN ' . ALL_FORUMS_TABLE . ' f ON f.cat_id = c.cat_id
                INNER JOIN ' . ALL_TOPICS_TABLE . ' t ON t.forum_id = f.forum_id
                WHERE t.topic_id = ' . $topic_id;

        if ( !($result = $db->sql_query($sql)) )
        {
            message_die(GENERAL_ERROR, "Could not obtain topic information", '', __LINE__, __FILE__, $sql);
        }

        if( $forum_topic_data = $db->sql_fetchrow($result) )
        {
            header('HTTP/1.0 301 Moved Permanently');
            header('Location: ' . $forum_topic_data['site_uri'] . "viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id");
        }
    }

    message_die(GENERAL_MESSAGE, 'Topic_post_not_exist');
}

précédentsommairesuivant

Copyright © 2007 Guillaume Rossolini. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.