Была задача сделать на движке 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’] .’&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/ - проверив все ли нормалько с картой сайта и как там идет индексация его!
Удачи всем =)