Перейти к контенту

карта сайта


Рекомендуемые сообщения

искал целый день

 

нашел для ipb 2

 

переделал

 

код

 

<?

//#####################Installation##################//
// Updated Feb 23, 2005  by: Mohamed Sallam (sallam)
// Rewritten Feb 19, 2003  by: P.H. Johansson (josini) 
// Hack rewritten according to Google restriction of max. 90 links in one page.
// Updated for IPB 2 Feb 22, 2005  by: P.H. Johansson (josini)
// Also the need of changing table-names have been changed to using the standard DB-class
// 
// Installation:
// 1) Now the only thing you have to do is to verify that you want 90 links on each page in $navlimit
// 2) Add any forum ids you do not want to be in the sitemap (ie admin) to $admin_forums (seperate ids with commas)
// 3) Upload this file to the root directory of your Board  (same folder that has index.php and admin.php)   
// 4) Make sure that show_sitemap.php resides in that directory too...!!!
//
//##################End installation#################//


//--------------------------------------------------------------------------
// config
//--------------------------------------------------------------------------


// This file can be saved as any name, but upload to your forum dir.
// But should you wish to rename this file make sure that show_sitemap.php contains the correct URL


// Only real variables for you to change. Include the trailing /


$navlimit=600;				 // How many entries do you want on each page??
$admin_forums = "";		 // The Forum Ids for your admin forums that you want to hide eg $admin_forums = "3,5";
						  // If you have no admin forums you need to hide keep this string empty;


//-------------------------------------------------------------------------------
// Do Not touch anything else below this line unless you know what you are doing
//-------------------------------------------------------------------------------

//-----------------------------------------------
// USER CONFIGURABLE ELEMENTS
//-----------------------------------------------

// Root path

define( 'ROOT_PATH'  , "./" );
define( 'KERNEL_PATH', ROOT_PATH.'ips_kernel/' );

// Enable module usage?
// (Vital for some mods and IPB enhancements)

define ( 'USE_MODULES', 1 );

// Enable shut down features?
// Uses PHPs register_shutdown_function to save
// low priority tasks until end of exec

define ( 'USE_SHUTDOWN', 1 );

$templates_dir = ROOT_PATH."ssi_templates";

$max_show  = 100;  // Maximum number of topics possible to show...

$allow_syndication = 1;  // To turn off, use $allow_syndication = 0;

//-----------------------------------------------
// NO USER EDITABLE SECTIONS BELOW
//-----------------------------------------------

define ( 'IN_IPB', 1 );
define ( 'IN_DEV', 0 );

error_reporting  (E_ERROR | E_WARNING | E_PARSE);
set_magic_quotes_runtime(0);

class info {

var $input	  = array();
var $base_url   = "";
var $vars	   = "";

function info()
{
	global $sess, $std, $DB, $INFO;

	$this->vars = &$INFO;
}
}

//--------------------------------
// Import $INFO, now!
//--------------------------------

require ROOT_PATH."conf_global.php";

//--------------------------------
// Require our global functions
//--------------------------------

require ROOT_PATH."sources/functions.php";

$std   = new FUNC;

//--------------------------------
// Load the DB driver and such
//--------------------------------

$INFO['sql_driver'] = ! $INFO['sql_driver'] ? 'mysql' : strtolower($INFO['sql_driver']);

//require ( KERNEL_PATH.'class_db_'.$INFO['sql_driver'].".php" );
require ( "sources/Drivers/mySQL.php" );

$DB = new db_driver;

$DB->obj['sql_database']	 = $INFO['sql_database'];
$DB->obj['sql_user']		 = $INFO['sql_user'];
$DB->obj['sql_pass']		 = $INFO['sql_pass'];
$DB->obj['sql_host']		 = $INFO['sql_host'];
$DB->obj['sql_tbl_prefix']   = $INFO['sql_tbl_prefix'];
$DB->obj['query_cache_file'] = ROOT_PATH.'sources/sql/'.$INFO['sql_driver'].'_queries.php';
$DB->obj['use_shutdown']	 = USE_SHUTDOWN;

//-----------------------------------
// Required vars?
//-----------------------------------

if ( is_array( $DB->connect_vars ) and count( $DB->connect_vars ) )
{
foreach( $DB->connect_vars as $k => $v )
{
	$DB->connect_vars[ $k ] = $INFO[ $k ];
}
}

//--------------------------------
// Get a DB connection
//--------------------------------

$DB->connect();



?>

<html>

<head>
<title><?=$INFO[board_name]?> -> Site Map</title>
<meta name="description" content="">
<meta name="keywords" content="">

<style>

h1		   { font-family: tahoma; font-size: 14pt; color: #666666 }
h2		   { font-family: tahoma; font-size: 12pt; color: #666666 }
body		 { font-family: tahoma; font-size: 8pt; color: #666666 }
p,td		 { font-family: tahoma; font-size: 8pt; color: #666666 }

</style>

</head>

<body>

<?php


if (trim($admin_forums)!="") {			 // Create the where-clause for admin_forums;
$tok = strtok($admin_forums,",");
while ($tok !== FALSE) {
 $toks[] = $tok;
 $tok = strtok(",");
}

while (list($k,$v) = each($toks)) {
 $where[] = "t.forum_id != $v";
 $where_forumcount[] = "id != $v";

}
$admin_exclude = "AND ".implode(" AND ", $where);
$admin_exclude_forumcount = "AND ".implode(" AND ", $where_forumcount);
$admin_exclude_topiccount = "WHERE ".implode(" AND ", $where);
}
$DB->query("SELECT * FROM ibf_forums where password ='' $admin_exclude_forumcount");
$forum_count = $DB->get_num_rows();
$DB->query("SELECT * FROM ibf_topics t $admin_exclude_topiccount");
$topic_count = $DB->get_num_rows();

if (!$start) {$start=0;};

$start = intval($start);

if ($limit=="NO") {$sqllimit = "";}
else {$sqllimit="LIMIT $start,$navlimit";}

$DB->query("SELECT f.name as fname, f.id as fid, f.description as fdescription,t.title as ttitle,t.tid as ttid,t.forum_id as tforum_id,t.description as tdescription FROM ibf_forums f, ibf_topics t where f.id=t.forum_id and f.password ='' $admin_exclude ORDER BY f.id asc, t.title asc $sqllimit");
$rowcount=$DB->get_num_rows();

echo "\r\n<h1>$INFO[board_name] -> SiteMap</h1>\r\n";
echo "\r\n<p>click here to return <a href=$INFO[board_url]/index.php>$INFO[board_name]</a></p>\r\n";
echo "<b>Number of Forums: </b>".$forum_count." - <b>Number of topics: </b>".$topic_count." - ";
echo "<b>Number of links on this page: </b>".$rowcount;

$oforumid = "";
$counter=0;
$fcount=0;
echo "<TABLE><TR><TD>";
while($row = $DB->fetch_row($result) and ($counter<$navlimit)) {
if ($row[tdescription]!="") {$tdescription = " [".$row[tdescription]."]";}
else {$tdescription="";};
if ($row[fdescription]!="") {$fdescription = " [".$row[fdescription]."]";}
else {$fdescription="";};

if ($oforumid != $row[fid]) {
	$counter+=1;
//$INFO[board_url]/show.php/act/SF/f/$row[fid]
echo "</TD></TR><TR><TD><a href=index.php?showforum=$row[fid] class=link7><B>$row[fname]</B></a>  ".$row[fdescription];
	$counter+=1;

//$INFO[board_url]/show.php/act/ST/f/$row[tforum_id]/t/$row[ttid]
echo "<BR>- <a href=index.php?showtopic=$row[ttid] class=link7>$row[ttitle]</a>  ".$row[tdescription];
	$oforumid = $row[fid];
	$fcount+=1;
}
else {
	$counter+=1;   // Count one for each topic
//$INFO[board_url]/show.php/act/ST/f/$row[tforum_id]/t/$row[ttid]
echo "<BR>- <a href=index.php?showtopic=$row[ttid] class=link7>$row[ttitle]</a>  ".$row[tdescription];
}

}
echo "</TD></TR></TABLE>";

$next = $start+$navlimit-$fcount;
if ($next<$topic_count) {
echo "<P><TABLE WIDTH=100%><TR>";
//$INFO[board_url]/show_sitemap.php/ofcount/$fcount/start/$next
echo "<TD align=left><h2><a href=sitemap.php?start=$next>Next</a></TD>";
echo "</TR></TABLE>\r\n";
}

?>

</body>

</html>

 

ссылки на карту сайта внизу форума http://rax.su/

 

карта сайта http://rax.su/sitemap.php

Ссылка на комментарий
Поделиться на других сайтах

Фильтрацию к ссылке NEXT добавь, а то кавычку ставишь и ппц....

http://rax.su/sitemap.php?start=1'

 

А так да, зачодно.

Изменено пользователем elcomnet
Ссылка на комментарий
Поделиться на других сайтах

Фильтрацию к ссылке NEXT добавь

 

респект, не предусмотрел :D

 

а так все совершенно правильно

 

если бы карта выводила все 5000 топиков, то от нее был бы только вред

 

а так, мы в карте обозначаем сколько топиков выводить ( например 600 )

 

а с главной ставим ссылки на карту, каждый раз увеличивая переменную start на это количество

Ссылка на комментарий
Поделиться на других сайтах

Фильтрацию к ссылке NEXT добавь

 

респект, не предусмотрел :D

Я после строки

if (!$start) {$start=0;};

добавил

$start = intval($start);

 

Теперь буду думать, как добавить вывод журналов...

У меня наверное треть контента в журналах.

Ссылка на комментарий
Поделиться на других сайтах

Фильтрацию к ссылке NEXT добавь

 

респект, не предусмотрел :D

Я после строки

if (!$start) {$start=0;};

добавил

$start = intval($start);

 

Теперь буду думать, как добавить вывод журналов...

У меня наверное треть контента в журналах.

 

FatCat ;)

опередил

 

я только зашел выложить исправление в первый пост

а оно уже выолжено :)

 

первый пост исправлен - мы добавили проверку на кавычки

Ссылка на комментарий
Поделиться на других сайтах

Я тут спрашивал, чем плоха карта из множества топиков.

Но пост куда-то пропал.

Ссылка на комментарий
Поделиться на других сайтах

Я в качестве карты просто скормил RSS, гуглу понравилось.
Ссылка на комментарий
Поделиться на других сайтах

Гугль доволен, накушался))))

Вообще-то с rss-ом нужно попробовать....

Изменено пользователем elcomnet
Ссылка на комментарий
Поделиться на других сайтах

Сделал вывод mJornal.

Показываются только открытые всем и открытые всем кроме гостей.

В этих журналах показываются записи кроме закрытых.

sitemap.txt

Ссылка на комментарий
Поделиться на других сайтах

А можно в пример рабочую установленную версию?

Так сказать наглядное пособие...

http://vesvalo.net/sitemap.php

Ссылка на комментарий
Поделиться на других сайтах

Карты с числом ссылок 500 и более на странице, они для кого - для ботов или людей? :D

Для ботов.

Пообщался с гуглой, гугла предпочла все ссылки на одной странице, поэтому у себя в карте сделал лимит 60 000 - дабы наверняка все в одной оказались.

Ссылка на комментарий
Поделиться на других сайтах

А я где-то встречал, что гугл любит короткие страницы с числом ссылок менее 100. Поэтому лимит ставят 90-100.

Я в "инструментах вебмастера гугл" специально посмотрел: лимит текстового файла 10 Мб; число ссылок не лимитировано.

На php гугл ругнулся (хочет *.xml или *.txt), мол формат неверный, но втихаря схомячил, и в течение суток проиндексировал ВСЕ страницы из этого файла.

Ссылка на комментарий
Поделиться на других сайтах

Добавил для многостраничных топиков линки на страницы.

Разбивка на страницы сделана так, как отдается поисковкам: в топиках по 15 постов; в журналах по 10 комментариев на страницу.

Файл в Сообщении #11 заменил

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...
Никто не подскажет, как сделать, чтобы через эту карту сайта не отображались темы скрытые от гостей? А то все темы для модераторов палятся как на ладони.
Ссылка на комментарий
Поделиться на других сайтах

Никто не подскажет, как сделать, чтобы через эту карту сайта не отображались темы скрытые от гостей? А то все темы для модераторов палятся как на ладони.

Можно посмотреть, как у меня сделано для скрытых записей в журналах, и сделать по аналогии для топиков форума. Заодно не худо добавить разбивку на страницы для длинных топиков.

Ссылка на комментарий
Поделиться на других сайтах

Не подскажешь примерно какие строки смотреть в твоей версии карты сайта для журналов? Буду очень благодарен.
$DB->query("SELECT j.pid, j.author_id, j.author_name, j.title, m.id, m.j_public, j.comments FROM ibf_jposts j, ibf_member_extra m WHERE j.author_id = m.id and j.closed = 0 and m.j_public <> 0 and m.j_public <> 2 ORDER BY j.author_name asc, j.title asc LIMIT 0 ,".($navlimit-$rowcount-2));

У меня модифицированы журналы: Помимо возможного j_public = 0 (только для друзей) у меня сделано возможным j_public = 2 (никому никогда).

Таким образом, в самом запросе к БД отсекаются закрытые записи.

 

Остается поискать в твоей версии форума: в каких полях какой таблицы записывается, что топик скрыт от пользователей и гостей, и какое значение там записано; и сделать отсев в запросе.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.