Sitemap generator для phpBB3

Posted on Sep 17 2009

Была задача сделать на движке phpBB 3 карту сайта (sitemap), дабы повысить индексируемо-пригодность форума разного рода поисковиками.

Из того что за час нашлось - половина битых сайтов-ссылок… вторая половина непонятно чего.

В общем на базе очередного набора кода было за 20 мин. скопи-программино этот шедевр говнокода ))

Ну не пропадать же… в общем выкладываю для общего доступа скрипт на тему Sitemap generator для phpBB3.

Код некрасивый вообще… собранный на codeIgniter-е sitemap generator думаю будет веселее и краше.

Собственно сам код под катом….
<?php

/**

* Very simple phpBB3 Sitemap Generator

*

* @author        Andrey Tkachenko

* @copyright    Copyright © 2009

* @license        OpenSource

* @link        http://aver.kiev.ua

*/



// some configuration data data

define(‘FORUM_DOMAIN_ROOT’, 'http://’.$_SERVER['HTTP_HOST’].’/’);

$disallow = array('none’);

define('IN_PHPBB’, true);

$phpbb_root_path = ’./’;

$phpEx = substr(strrchr(__FILE__, ’.’), 1);

include($phpbb_root_path . 'common.’.$phpEx);



/**

* Lets start a Party ;-)

*/

// send xml header…

header (“content-type: text/xml”);

echo ’<?xml version=“1.0” encoding=“UTF-8”?>’.“n”;

// get forumID (siteMap id from get

if ($_GET['fid’]){

$fid = (int) $_GET['fid’];

}



if (isset($fid)) {



if ($fid == '65535’) {

// if id 65535 show forum forums index…

echo '  <urlset xmlns=“http://www.google.com/schemas/sitemap/0.84”>’.“n”;

echo '    <url>

<loc>’.FORUM_DOMAIN_ROOT.’</loc>

<changefreq>daily</changefreq>

</url>’;



$sql = 'SELECT forum_id,forum_name FROM ’.$table_prefix.'forums’;

$result = $db->sql_query($sql);

while ($data = $db->sql_fetchrow($result)) {

if (!array_search($data['forum_name’], $disallow)) {

echo ’

<url>

<loc>’. FORUM_DOMAIN_ROOT .'viewtopic.php?f=’. $data['forum_id’] .’</loc>

<changefreq>daily</changefreq>

</url>’;

}

}

echo '  </urlset>’;

$db->sql_freeresult($result);

} else {

// Let’s check it’s not a restricted forum

$sql = 'SELECT forum_id FROM ’.$table_prefix.'forums WHERE forum_id = “’.$fid.’”’;

$result = $db->sql_query($sql);

$data = $db->sql_fetchrow($result);

$db->sql_freeresult($result);

if ($data['forum_id’] == $fid) {

echo '  <urlset xmlns=“http://www.google.com/schemas/sitemap/0.84”>’.“n”;

$sql = 'SELECT t.*, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_username2, p2.post_time

FROM ’.$table_prefix.'topics t, ’.$table_prefix.'users u, ’.$table_prefix.'posts p, ’.$table_prefix.'posts p2, ’.$table_prefix.'users u2, ’.$table_prefix.'forums f

WHERE t.forum_id = f.forum_id and t.forum_id = ’.$fid.’ AND t.topic_poster = u.user_id AND p.post_id = t.topic_first_post_id AND p2.post_id = t.topic_last_post_id AND u2.user_id = p2.poster_id ORDER BY t.topic_type DESC, t.topic_last_post_id DESC’;

$result = $db->sql_query($sql);

while ($data = $db->sql_fetchrow($result)) {

echo '    <url>

<loc>’. FORUM_DOMAIN_ROOT .'viewtopic.php?f=’. $data['forum_id’] .’&amp;t=’. $data['topic_id’] .’</loc>

<lastmod>’.date('Y-m-d’, $data['post_time’]),’</lastmod>

</url>’;

}

echo '  </urlset>’;

$db->sql_freeresult($result);

}

}

} else {

echo '  <sitemapindex xmlns=“http://www.google.com/schemas/sitemap/0.84”>’.“n”;

// Let’s create a link to the main forum index sitemap

echo '    <sitemap>

<loc>’.FORUM_DOMAIN_ROOT.'sitemap.php?fid=65535</loc>

</sitemap>’;

// Let’s do a loop here and list all the forums!

$sql = 'SELECT forum_id,forum_name FROM ’.$table_prefix.'forums’;// WHERE auth_view = “0” and auth_read = “0”’;

$result = $db->sql_query($sql);

while ($data = $db->sql_fetchrow($result)) {

if (!array_search($data['forum_name’], $disallow)) {

echo ’

<sitemap>

<loc>’.FORUM_DOMAIN_ROOT.'sitemap.php?fid=’.$data['forum_id’].’</loc>

</sitemap>’;

}

}

echo “n”.'  </sitemapindex>’;

$db->sql_freeresult($result);

}

?>



Также - можно скачать Sitemap generator для phpBB3 одним файлом тут http://aver.kiev.ua/dl/sitemap.php.zip



Установить просто!

1) скачать архив…

2) разархивировать - залить на хостинг в папку форума в корень файл  sitemap.php

3) все! По адресу  http://SampleSiteForum.com/forum/sitemap.php - ваша карата сайта - форума



Далее можно добавить в robots.txt строку вида
sitemap: http://SampleSiteForum.com/forum/sitemap.php



дабы поисковики нашли сайтмепы вашего сайта.

Также можно воспользоваться центром помощи веб мастеру от Google https://www.google.com/webmasters/tools/ и Yandex http://webmaster.yandex.ru/ - проверив все ли нормалько с картой сайта и как там идет индексация его!

Удачи всем =)