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

карта сайта


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

Всё получилось. Огромное спасибо.

А как поставить на 2.3.5

Ошибки выдаёт, и реально такого файла там нет :D

 

Warning: main(./sources/functions.php) [function.main]: failed to open stream: No such file or directory in /home/yasonco/forum/sitemap.php on line 100

Warning: main(./sources/functions.php) [function.main]: failed to open stream: No such file or directory in /home/yasonco/forum/sitemap.php on line 100

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

  • 4 недели спустя...

Сделал для гуглы txt-копию:

При открытии страницы sitemap.php, автоматически генерится текстовая версия в файл sitemap.txt, который можно скормить гугле через "инструменты вебмастера".

Вот мой файл:

<?

//#####################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=60000;                 // 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();
$DB->query("SELECT  j.pid, j.author_id, j.author_name, j.title, m.id, m.j_public 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");
$journal_count = $DB->get_num_rows();
$DB->query("SELECT distinct j.author_id, j.author_name, m.id, m.j_public 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");
$journals_count = $DB->get_num_rows();
if (!$start) {$start=0;}
$start = intval($start);


$print1 = "\r\n<h1>$INFO[board_name] -> карта сайта</h1>\r\n";
$print1 .= "\r\n<p>На главную <a href=$INFO[board_url]/index.php>$INFO[board_name]</a></p>\r\n";
$print1 .= "<b>Форумов: </b>".$forum_count." - <b>Топиков: </b>".$topic_count." - <b>Журналов: </b>".$journals_count." - <b>Записей в журналах: </b>".$journal_count." - ";



if ($start<$topic_count) { //Еще не кончились топики

$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, t.posts 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();



$oforumid = "";
$counter=0;
$counter2=0;
$fcount=0;
$print2 = "<TABLE><TR><TD>";
$print_txt = "";
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]
$print2 .= "</TD></TR><TR><TD><a href=index.php?showforum=$row[fid] class=link7><B>$row[fname]</B></a>  ".$row[fdescription];
$print_txt .= "$INFO[board_url]/index.php?showforum=$row[fid]\r\n";
       $counter+=1;

//$INFO[board_url]/show.php/act/ST/f/$row[tforum_id]/t/$row[ttid]
$print2 .= "<BR>- <a href=index.php?showtopic=$row[ttid] class=link7>$row[ttitle]</a>  ".$row[tdescription];
$print_txt .= "$INFO[board_url]/index.php?showtopic=$row[ttid]\r\n";
if($row[posts] > 14)
{
$print2 .= " (Страницы: ";
$strtn = ( ($row[posts]+1-($row[posts]+1)%15)/15 ) ;

for ($x=0; $x<$strtn; $x++)
{
$print2 .= " <a href=index.php?showtopic=$row[ttid]&st=".(($x+1)*15)." class=link7>".($x+2)."</a>";
$print_txt .= "$INFO[board_url]/index.php?showtopic=$row[ttid]&st=".(($x+1)*15)."\r\n";
$counter2+=1;
}
$print2 .= ")";
}
       $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]
$print2 .= "<BR>- <a href=index.php?showtopic=$row[ttid] class=link7>$row[ttitle]</a>  ".$row[tdescription];
$print_txt .= "$INFO[board_url]/index.php?showtopic=$row[ttid]\r\n";
if($row[posts] > 14)
{
$print2 .= " (Страницы: ";
$strtn = ( ($row[posts]+1-($row[posts]+1)%15)/15 ) ;

for ($x=0; $x<$strtn; $x++)
{
$print2 .= " <a href=index.php?showtopic=$row[ttid]&st=".(($x+1)*15)." class=link7>".($x+2)."</a>";
$print_txt .= "$INFO[board_url]/index.php?showtopic=$row[ttid]&st=".(($x+1)*15)."\r\n";
$counter2+=1;
}
$print2 .= ")";
}
   }

}

if($rowcount<$navlimit){  //Мало линков на топики, надо выводить журналы
$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));
$ojournalid = "";
$journalcounter=0;
$journalcount=0;
while($row = $DB->fetch_row($result) and ($counter<$navlimit)) {
   if ($ojournalid != $row[author_id]) {
       $journalcount+=1;
//$INFO[board_url]/show.php/act/SF/f/$row[fid]
$print2 .= "</TD></TR><TR><TD><a href=journal.php?user=$row[author_id] class=link7><B>Журнал $row[author_name]</B></a>";
$print_txt .= "$INFO[board_url]/journal.php?user=$row[author_id]\r\n";
       $journalcount+=1;
if($row[title] == ""){$row[title]="...";}
//$INFO[board_url]/show.php/act/ST/f/$row[tforum_id]/t/$row[ttid]
$print2 .= "<BR>- <a href=journal.php?user=$row[author_id]&comm=$row[pid] class=link7>$row[title]</a>";
$print_txt .= "$INFO[board_url]/journal.php?user=$row[author_id]&comm=$row[pid]\r\n";
       $ojournalid = $row[author_id];
       $journalcount+=1;
   }
   else {
       $journalcount+=1;   // Count one for each topic
//$INFO[board_url]/show.php/act/ST/f/$row[tforum_id]/t/$row[ttid]
$print2 .= "<BR>- <a href=journal.php?user=$row[author_id]&comm=$row[pid] class=link7>$row[title]</a>";
$print_txt .= "$INFO[board_url]/journal.php?user=$row[author_id]&comm=$row[pid]\r\n";
if($row[comments] > 10)
{
$print2 .= " (Страницы: ";
$strtn = ( ($row[comments]-1-($row[comments]-1)%10)/10 ) ;

for ($x=0; $x<$strtn; $x++)
{
$print2 .= " <a href=journal.php?user=$row[author_id]&comm=$row[pid]&st=".(($x+1)*10)." class=link7>".($x+2)."</a>";
$print_txt .= "$INFO[board_url]/journal.php?user=$row[author_id]&comm=$row[pid]&st=".(($x+1)*10)."\r\n";
$counter2+=1;
}
$print2 .= ")";
}
   }

}
}
//  Закончили вывод журналов на стыке страниц
echo "</TD></TR></TABLE>";
}


else{ //Пошли по журналам
$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 ".($start-$topic_count).",".($navlimit-2));
$ojournalid = "";
$journalcounter=0;
$journalcount=0;
$print2 = "<TABLE><TR><TD>";
while($row = $DB->fetch_row($result) and ($counter<$navlimit)) {
   if ($ojournalid != $row[author_id]) {
       $journalcount+=1;
//$INFO[board_url]/show.php/act/SF/f/$row[fid]
$print2 .= "</TD></TR><TR><TD><a href=journal.php?user=$row[author_id] class=link7><B>Журнал $row[author_name]</B></a>";
$print_txt = "$INFO[board_url]/journal.php?user=$row[author_id]\r\n";
       $journalcount+=1;
if($row[title] == ""){$row[title]="...";}
//$INFO[board_url]/show.php/act/ST/f/$row[tforum_id]/t/$row[ttid]
$print2 .= "<BR>- <a href=journal.php?user=$row[author_id]&comm=$row[pid] class=link7>$row[title]</a>";
$print_txt .= "$INFO[board_url]/journal.php?user=$row[author_id]&comm=$row[pid]\r\n";
       $ojournalid = $row[author_id];
       $journalcount+=1;
   }
   else {
       $journalcount+=1;   // Count one for each topic
//$INFO[board_url]/show.php/act/ST/f/$row[tforum_id]/t/$row[ttid]
$print2 .= "<BR>- <a href=journal.php?user=$row[author_id]&comm=$row[pid] class=link7>$row[title]</a>";
$print_txt .= "$INFO[board_url]/journal.php?user=$row[author_id]&comm=$row[pid]\r\n";

if($row[comments] > 10)
{
$print2 .= " (Страницы: ";
$strtn = ( ($row[comments]-1-($row[comments]-1)%10)/10 ) ;

for ($x=0; $x<$strtn; $x++)
{
$print2 .= " <a href=journal.php?user=$row[author_id]&comm=$row[pid]&st=".(($x+1)*10)." class=link7>".($x+2)."</a>";
$print_txt .= "$INFO[board_url]/journal.php?user=$row[author_id]&comm=$row[pid]&st=".(($x+1)*10)."\r\n";
$counter2+=1;
}
$print2 .= ")";
}



   }

}

}
	$fh = fopen("sitemap.txt", "w");
	fwrite($fh, $print_txt);
	fclose($fh);
echo $print1;
echo "<b>Линков на этой странице: </b>".($rowcount+$journalcount+$counter2);
echo $print2;

$next = $start+$navlimit-$fcount;
if ($next<($topic_count+$journal_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>

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

  • 5 месяцев спустя...

Скажите, а для версии 2.3 есть такая карта?

И как ее ставить, поясните плиз!

FatCat в первую очередь в Вашу сторону взор кидаю! :D Вы добрый, я знаю ;)

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

Скажите, а для версии 2.3 есть такая карта?

Структура БД для хранения самих сообщений осталась одинаковой, но права доступа к форумам теперь задаются совсем иначе.

Потребуется полностью переделывать функцию проверки разрешений просмотра гостям.

Плюс, в двушках синтаксис поменялся.

Не возьмусь, у меня и двушки в пользовании нет, чтобы можно было в процессе переделки мода тестировать работоспособность. Да и не люблю я двушки...

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

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

 

нашел для ipb 2

где нашел? можно линк, хотя бы в ПМ? заранее благодарен

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

  • 2 месяца спустя...
искал целый день

 

нашел для ipb 2

где нашел? можно линк, хотя бы в ПМ? заранее благодарен

 

вот тоже очень интересно... ищу

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

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

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

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

Там же уже есть переменная $admin_forums - список форумов через запятую, из которых топики не забираются.

Ее и можно "дозаправить" простым кодом:

$DB->query("SELECT id, read_perms, password from ibf_forums");
while($row = $DB->fetch_row($result))
{
$row['read_perms'] .= ",";
if( !stristr($row['read_perms'],"3,") or $row['password'] != "" )
{
	if($admin_forums == "")$admin_forums .= $row['id'];
	else $admin_forums .= ",".$row['id'];
}
}

 

А если еще и mJournal установлен под 1.х, то можно и его в сайтмеп вынести - те ветки тех журналов, которые доступны гостям. А заодно при каждом обращении к этой страницы сделать перегенерацию sitemap.txt, валидного для всех поисковок. Давно сделал себе такое. Приаттачиваю, если кому понадобится.

sitemap.php

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

Там же уже есть переменная $admin_forums - список форумов через запятую, из которых топики не забираются.

Спасибо, получилось :D

 

Сделал для гуглы txt-копию:

При открытии страницы sitemap.php, автоматически генерится текстовая версия в файл sitemap.txt, который можно скормить гугле через "инструменты вебмастера".

Вот мой файл:

Тоесть Гугл не воспринимает имено sitemap в php-варианте?

 

Заодно не худо добавить разбивку на страницы для длинных топиков.

Да не плохо было бы это реализовать.

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

Тоесть Гугл не воспринимает имено sitemap в php-варианте?

Если скормить через панель вебмастера, не ест, хочет xml или txt

 

 

Заодно не худо добавить разбивку на страницы для длинных топиков.

Да не плохо было бы это реализовать.

У меня это реализовано, не помню уже, было так, или я потом дописал.

 

Возьми мой прицепленный файл, поудаляй те функции, которые собирают контент из таблиц ibf_jpost и ibf_jcomment, если не используешь журнал, и останется как раз то что нужно: когда php-файл прилинкован к главной как страница "карта сайта", на него постоянно влетают то поисковые боты, то кто-нибудь из посетителей; в результате файл sitemap.txt так или иначе обновляется практически ежедневно.

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

  • 3 месяца спустя...

интересно, а можно реализовать аналогичное для 2.3.6

но чтоб ещё выводило заголовки спойлеров и вложенных в них спойлеров заголовки тоже

 

из вот этого спойлер мода http://forums.ibresource.ru/index.php?showtopic=57660

 

может кто возьмётся... :D

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

чтоб ещё выводило заголовки спойлеров и вложенных в них спойлеров заголовки тоже

В карту сайта?

Это что-то совершенно незнакомое для меня. Можно поподробнее саму идею?

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

  • 7 лет спустя...
Собственно вопрос: карта сайта ссылки на все услуги/категории товаров в футере на всех старницах - это хорошо или плохо для SEO? Больше интересует Google.
Ссылка на комментарий
Поделиться на других сайтах

ссылки на все услуги/категории товаров

На форуме?

 

 

 

 

хорошо или плохо для SEO?

Хорошо для магазина, рекламируемого через форум. Плохо для форума.

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

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

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

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

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

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

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

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

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

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

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

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