Forum pragmaMx France 10 Février 2012 à 20:55:59 *
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.


Connexion avec identifiant et mot de passe
 
Accueil Aide Rechercher
Pages: 1 [2]   Bas de page
Imprimer
Auteur Fil de discussion: SMF n'est pas dans le sitemap  (Lu 6684 fois)
HollowMac
Membre Senior Mx
****
Hors ligne Hors ligne

Messages: 256



« Répondre #15 le: 01 Février 2011 à 18:16:31 »

Bonjour,

J'ai réussi à intégrer le rewrite_url pour SMF dans mon Sitemap. Cependant, je n'arrive pas à convertir les caractères accentués, et mon sitemap m'affiche alors ceci � à la place. Je précise également que le remplacement des caractères spéciaux pour le rewrite_url de mon forum SMF ne marche pas non plus hallucine

Voici le code utilisé pour mon sitemap, pour SMF :
Code:
function simple($modname)
{
    global $limit, $prefix, $i, $item;
    if (!google_allowed($modname)) {
        return;
    }

    // Boards die nicht angezeigt werden sollen, als Array
    $exclude_boards = null;

    // / versch. globale Variablen vorher initialisieren, weil in Funktionen aufgerufen
    global $db_prefix, $settings, $context, $mxsmf;

    if (@file_exists('modules/' . $modname . '/mx_SSI.php')) {
     include('modules/' . $modname . '/mx_SSI.php');
    }
    if (!function_exists('mxSmfCreatePmxUrl')) {
     return;
    }
    
    $titreSite = 'http://www.myrmecosphere.fr/';

    //$posts = ssi_recentPosts(intval($limit), $exclude_boards, 'array');
    $posts = ssi_Topics($exclude_boards, 'array');
    $umlaute = array("À", "Á", "Â", "Ã", "Ä", "Å",
"Ç",
"È", "É", "Ê", "Ë",
"Ì", "Í", "Î", "Ï",
"Ò", "Ó", "Ô", "Õ", "Ö",
"Ù", "Ú", "Û", "Ü",
"Ý",
"à", "á", "â", "ã", "ä", "å",
"ç",
"è", "é", "ê", "ë",
"ì", "í" ,"î", "ï",
"ð", "ò", "ó", "ô", "õ", "ö",
"ù", "ú", "û", "ü",
"ý", "ÿ",
"&");
    $ersetzung = array("A", "A", "A", "A", "A", "A",
"C",
"E", "E", "E", "E",
"I", "I", "I", "I",
"O", "O", "O", "O", "O",
"U", "U", "U", "U",
"Y",
"a", "a", "a", "a", "a", "a",
"c",
"e", "e", "e", "e",
"i", "i", "i", "i",
"o", "o", "o", "o", "o", "o",
"u", "u", "u", "u",
"y", "y",
"et");

    foreach ($posts as $row) {
        $i++;

$titel_forum_rewrite_t = $row['subject'];
$titel_forum_rewrite_t = str_replace($umlaute, $ersetzung, $titel_forum_rewrite_t);
$titel_forum_rewrite_t = preg_replace('#\W#', "-", $titel_forum_rewrite_t);
$titel_forum_rewrite_t = preg_replace('#---#', "-", $titel_forum_rewrite_t);
$titel_forum_rewrite_t = preg_replace('#--#', "-", $titel_forum_rewrite_t);
$titel_forum_fert_t = $titreSite;
$titel_forum_fert_t.= "Forum-top-";
$titel_forum_fert_t.= "$titel_forum_rewrite_t-";
$titel_forum_fert_t.= $row['topic'];
$titel_forum_fert_t.= ".html";
        $item[$i]['link'] = $titel_forum_fert_t;
        $item[$i]['date'] = intval($row['timestamp']);
    }
}

La fonction ssi_Topics utilisée correspond à la fonction ssi_recentTopics que j'ai modifié afin de récupérer une liste de topics et non de posts. Le code utilisé pour ré-écrire les URL correspond à celui donné par Diabolo pour le rewrite_url avancé pour SMF.

Voici un lien vers mon sitemap : http://www.myrmecosphere.fr/google_sitemap.php

Si quelqu'un a une idée, je serais preneur Clin d'oeil

edit : bon, finalement, j'ai trouvé !!! Sourire
En me baladant sur le site d'algebre, j'ai découvert phpfreechat, et sur leur site, j'ai découvert par hasard la fonction iconv(), qui permet de convertir une chaine d'un jeu de caractères à un autre ! La ré-écriture d'url marche donc dans mon sitemap et sur mon forum ! Sourire Sourire Sourire

Je remets donc la partie concernant la ré-écriture d'url dans mon sitemap pour ceux que ça intéresserait :
Code:
$titel_forum_rewrite_t = iconv("ISO-8859-1", "UTF-8", $row['subject']);
$titel_forum_rewrite_t = str_replace($umlaute, $ersetzung, $titel_forum_rewrite_t);
$titel_forum_rewrite_t = preg_replace('#\W#', "-", $titel_forum_rewrite_t);
$titel_forum_rewrite_t = preg_replace('#---#', "-", $titel_forum_rewrite_t);
$titel_forum_rewrite_t = preg_replace('#--#', "-", $titel_forum_rewrite_t);
$titel_forum_fert_t = $titreSite;
$titel_forum_fert_t.= "Forum-top-";
$titel_forum_fert_t.= "$titel_forum_rewrite_t-";
$titel_forum_fert_t.= $row['topic'];
$titel_forum_fert_t.= ".html";
$item[$i]['link'] = $titel_forum_fert_t;
$item[$i]['date'] = intval($row['timestamp']);
Clin d'oeil
« Dernière édition: 01 Février 2011 à 19:27:13 par HollowMac » Journalisée

Youkoulélé !
shorty
Membre Senior Mx
****
Hors ligne Hors ligne

Messages: 367


La communauté de Troc et d'échanges francophone


« Répondre #16 le: 02 Février 2011 à 20:55:42 »

 Salut à tous   respect

merci pour cette belle trouvaille, jusqu'à présent j'utilisai d'autres sitemaps spécifiques.
si g bien compris il faut faire sa ?

Code:
function simple($modname)
{
    global $limit, $prefix, $i, $item;
    if (!google_allowed($modname)) {
        return;
    }

    // Boards die nicht angezeigt werden sollen, als Array
    $exclude_boards = null;

    // / versch. globale Variablen vorher initialisieren, weil in Funktionen aufgerufen
    global $db_prefix, $settings, $context, $mxsmf;

    if (@file_exists('modules/' . $modname . '/mx_SSI.php')) {
    include('modules/' . $modname . '/mx_SSI.php');
    }
    if (!function_exists('mxSmfCreatePmxUrl')) {
    return;
    }
   
    $titreSite = 'http://www.myrmecosphere.fr/';

    //$posts = ssi_recentPosts(intval($limit), $exclude_boards, 'array');
    $posts = ssi_Topics($exclude_boards, 'array');
    $umlaute = array("À", "Á", "Â", "Ã", "Ä", "Å",
"Ç",
"È", "É", "Ê", "Ë",
"Ì", "Í", "Î", "Ï",
"Ò", "Ó", "Ô", "Õ", "Ö",
"Ù", "Ú", "Û", "Ü",
"Ý",
"à", "á", "â", "ã", "ä", "å",
"ç",
"è", "é", "ê", "ë",
"ì", "í" ,"î", "ï",
"ð", "ò", "ó", "ô", "õ", "ö",
"ù", "ú", "û", "ü",
"ý", "ÿ",
"&");
    $ersetzung = array("A", "A", "A", "A", "A", "A",
"C",
"E", "E", "E", "E",
"I", "I", "I", "I",
"O", "O", "O", "O", "O",
"U", "U", "U", "U",
"Y",
"a", "a", "a", "a", "a", "a",
"c",
"e", "e", "e", "e",
"i", "i", "i", "i",
"o", "o", "o", "o", "o", "o",
"u", "u", "u", "u",
"y", "y",
"et");

    foreach ($posts as $row) {
        $i++;

$titel_forum_rewrite_t = iconv("ISO-8859-1", "UTF-8", $row['subject']);
$titel_forum_rewrite_t = str_replace($umlaute, $ersetzung, $titel_forum_rewrite_t);
$titel_forum_rewrite_t = preg_replace('#\W#', "-", $titel_forum_rewrite_t);
$titel_forum_rewrite_t = preg_replace('#---#', "-", $titel_forum_rewrite_t);
$titel_forum_rewrite_t = preg_replace('#--#', "-", $titel_forum_rewrite_t);
$titel_forum_fert_t = $titreSite;
$titel_forum_fert_t.= "Forum-top-";
$titel_forum_fert_t.= "$titel_forum_rewrite_t-";
$titel_forum_fert_t.= $row['topic'];
$titel_forum_fert_t.= ".html";
$item[$i]['link'] = $titel_forum_fert_t;
$item[$i]['date'] = intval($row['timestamp']);
    }
}


 C'est bien sa ?
Et comment je peux faire si il y a un autre module du même type et qu'il ne s'appelle pas "Forum"

 Merci à toute la communauté PragmaMx pour son support et son soutien

Journalisée

HollowMac
Membre Senior Mx
****
Hors ligne Hors ligne

Messages: 256



« Répondre #17 le: 03 Février 2011 à 12:43:29 »

Ouaip, c'est bien ça Clin d'oeil Faut juste ne pas oublier de modifier la variable $titreSite.
Penser aussi à éditer la variable $exclude_boards, pour éviter de répertorier certaines sections interdites d'accès aux visiteurs, en lui passant un array() comme valeur.
On peut voir sur mon site que ça marche bien Sourire : http://www.myrmecosphere.fr/google_sitemap.php

Après, j'utilise aussi avec ça une fonction que j'ai créé dans /modules/Forum/smf/SSI.php, qui récupère la liste des topics, et non des derniers messages des topics, ce qui est plus approprié AMHA pour un sitemap :

Code:
// Topic list:   [board] Subject by Poster Date
function ssi_Topics($exclude_boards = null, $output_method = 'echo')
{
global $context, $settings, $scripturl, $txt, $db_prefix, $ID_MEMBER;
global $user_info, $modSettings, $func;

if ($exclude_boards === null && !empty($modSettings['recycle_enable']) && $modSettings['recycle_board'] > 0)
$exclude_boards = array($modSettings['recycle_board']);
else
$exclude_boards = empty($exclude_boards) ? array() : $exclude_boards;

$stable_icons = array('xx', 'thumbup', 'thumbdown', 'exclamation', 'question', 'lamp', 'smiley', 'angry', 'cheesy', 'grin', 'sad', 'wink', 'moved', 'recycled', 'wireless');
$icon_sources = array();
foreach ($stable_icons as $icon)
$icon_sources[$icon] = 'images_url';

// Find all the posts in distinct topics.  Newer ones will have higher IDs.
$request = db_query("
SELECT
m.posterTime, ms.subject, m.ID_TOPIC, m.ID_MEMBER, m.ID_MSG, b.ID_BOARD, b.name AS bName,
IFNULL(mem.realName, m.posterName) AS posterName, " . ($user_info['is_guest'] ? '1 AS isRead, 0 AS new_from' : '
IFNULL(lt.ID_MSG, IFNULL(lmr.ID_MSG, 0)) >= m.ID_MSG_MODIFIED AS isRead,
IFNULL(lt.ID_MSG, IFNULL(lmr.ID_MSG, -1)) + 1 AS new_from') . ", LEFT(m.body, 384) AS body, m.smileysEnabled, m.icon
FROM ({$db_prefix}messages AS m, {$db_prefix}topics AS t, {$db_prefix}boards AS b, {$db_prefix}messages AS ms)
LEFT JOIN {$db_prefix}members AS mem ON (mem.ID_MEMBER = m.ID_MEMBER)" . (!$user_info['is_guest'] ? "
LEFT JOIN {$db_prefix}log_topics AS lt ON (lt.ID_TOPIC = t.ID_TOPIC AND lt.ID_MEMBER = $ID_MEMBER)
LEFT JOIN {$db_prefix}log_mark_read AS lmr ON (lmr.ID_BOARD = b.ID_BOARD AND lmr.ID_MEMBER = $ID_MEMBER)" : '') . "
WHERE t.ID_LAST_MSG = m.ID_MSG
AND b.ID_BOARD = t.ID_BOARD" . (empty($exclude_boards) ? '' : "
AND b.ID_BOARD NOT IN (" . implode(', ', $exclude_boards) . ")") . "
AND $user_info[query_see_board]
AND ms.ID_MSG = t.ID_FIRST_MSG
ORDER BY t.ID_FIRST_MSG DESC", __FILE__, __LINE__);
$posts = array();
while ($row = mysql_fetch_assoc($request))
{
$row['body'] = strip_tags(strtr(parse_bbc($row['body'], $row['smileysEnabled'], $row['ID_MSG']), array('<br />' => '&#10;')));
if ($func['strlen']($row['body']) > 128)
$row['body'] = $func['substr']($row['body'], 0, 128) . '...';

// Censor the subject.
censorText($row['subject']);
censorText($row['body']);

if (empty($modSettings['messageIconChecks_disable']) && !isset($icon_sources[$row['icon']]))
$icon_sources[$row['icon']] = file_exists($settings['theme_dir'] . '/images/post/' . $row['icon'] . '.gif') ? 'images_url' : 'default_images_url';

// Build the array.
$posts[] = array(
'board' => array(
'id' => $row['ID_BOARD'],
'name' => $row['bName'],
'href' => $scripturl . '?board=' . $row['ID_BOARD'] . '.0',
'link' => '<a href="' . $scripturl . '?board=' . $row['ID_BOARD'] . '.0">' . $row['bName'] . '</a>'
),
'topic' => $row['ID_TOPIC'],
'poster' => array(
'id' => $row['ID_MEMBER'],
'name' => $row['posterName'],
'href' => empty($row['ID_MEMBER']) ? '' : $scripturl . '?action=profile;u=' . $row['ID_MEMBER'],
'link' => empty($row['ID_MEMBER']) ? $row['posterName'] : '<a href="' . $scripturl . '?action=profile;u=' . $row['ID_MEMBER'] . '">' . $row['posterName'] . '</a>'
),
'subject' => $row['subject'],
'short_subject' => shorten_subject($row['subject'], 25),
'preview' => $row['body'],
'time' => timeformat($row['posterTime']),
'timestamp' => forum_time(true, $row['posterTime']),
'href' => $scripturl . '?topic=' . $row['ID_TOPIC'] . ';topicseen',
'link' => '<a href="' . $scripturl . '?topic=' . $row['ID_TOPIC'] . '">' . $row['subject'] . '</a>',
'new' => !empty($row['isRead']),
'new_from' => $row['new_from'],
'icon' => '<img src="' . $settings[$icon_sources[$row['icon']]] . '/post/' . $row['icon'] . '.gif" align="middle" alt="' . $row['icon'] . '" border="0" />',
);
}
mysql_free_result($request);

// Just return it.
if ($output_method != 'echo' || empty($posts))
return $posts;

echo '
<table border="0" class="ssi_table">';
foreach ($posts as $post)
echo '
<tr>
<td align="right" valign="top" nowrap="nowrap">
[', $post['board']['link'], ']
</td>
<td valign="top">
<a href="', $post['href'], '">', $post['subject'], '</a>
', $txt[525], ' ', $post['poster']['link'], '
', $post['new'] ? '' : '<a href="' . $scripturl . '?topic=' . $post['topic'] . '.msg' . $post['new_from'] . ';topicseen#new"><img src="' . $settings['images_url'] . '/' . $context['user']['language'] . '/new.gif" alt="' . $txt[302] . '" border="0" /></a>', '
</td>
<td align="right" nowrap="nowrap">
', $post['time'], '
</td>
</tr>';
echo '
</table>';
}

Pour ce qui est de répertorier un module du même type mais d'un nom différent, aucune idée hallucine
« Dernière édition: 03 Février 2011 à 12:46:19 par HollowMac » Journalisée

Youkoulélé !
shorty
Membre Senior Mx
****
Hors ligne Hors ligne

Messages: 367


La communauté de Troc et d'échanges francophone


« Répondre #18 le: 04 Février 2011 à 03:29:04 »

Super tout sa  bien joué
Journalisée

Pages: 1 [2]   Haut de page
Imprimer
Forum pragmaMx France  |  PragmaMx  |  Utilisation générale des différents modules intégrés en natif  |  .htaccess et rewriting (Modérateurs: Diabolo, kroms, phi56360)  |  Fil de discussion: SMF n'est pas dans le sitemap
 
Aller à:  

Powered by SMF 1.1.15 | SMF © 2006-2009, Simple Machines

Plus