diff --git a/install/sql/mysql.sql b/install/sql/mysql.sql index fe0a74fb6..66c0e5ab7 100644 --- a/install/sql/mysql.sql +++ b/install/sql/mysql.sql @@ -557,8 +557,10 @@ INSERT INTO `bb_config` VALUES ('seed_bonus_points', ''); INSERT INTO `bb_config` VALUES ('seed_bonus_tor_size', '0'); INSERT INTO `bb_config` VALUES ('seed_bonus_user_regdate', '0'); INSERT INTO `bb_config` VALUES ('site_desc', 'A little text to describe your forum'); +INSERT INTO `bb_config` VALUES ('sitemap_time', ''); INSERT INTO `bb_config` VALUES ('sitename', 'TorrentPier II - Torrent Tracker'); INSERT INTO `bb_config` VALUES ('smilies_path', 'images/smiles'); +INSERT INTO `bb_config` VALUES ('static_sitemap', ''); INSERT INTO `bb_config` VALUES ('topics_per_page', '50'); INSERT INTO `bb_config` VALUES ('xs_use_cache', '1'); INSERT INTO `bb_config` VALUES ('active_ads', ''); @@ -642,6 +644,7 @@ INSERT INTO `bb_cron` VALUES (18, 1, 'Seeder last seen', 'tr_update_seeder_last_ INSERT INTO `bb_cron` VALUES (19, 1, 'Captcha', 'captcha_gen_gc.php', 'daily', NULL, '05:00:00', 120, '', '', NULL, 0, '', 0, 0, 0); INSERT INTO `bb_cron` VALUES (20, 1, 'Tracker dl-complete count', 'tr_complete_count.php', 'interval', NULL, NULL, 255, '', '', '06:00:00', 0, '', 0, 0, 0); INSERT INTO `bb_cron` VALUES (21, 1, 'Cache garbage collector', 'cache_gc.php', 'interval', NULL, NULL, 255, '', '', '00:05:00', 0, '', 0, 0, 0); +INSERT INTO `bb_cron` VALUES (22, 1, 'Sitemap update', 'sitemap.php', 'daily', NULL, '06:00:00', 30, '', '', NULL, 0, '', 0, 0, 0); -- -------------------------------------------------------- diff --git a/readme.txt b/readme.txt new file mode 100644 index 000000000..568d8cf97 --- /dev/null +++ b/readme.txt @@ -0,0 +1,3 @@ +Для получения информации об установке движка, откройте в своем браузере указаную ссылку: + +https://github.com/torrentpier/tracker/tree/master#torrentpier-ii \ No newline at end of file diff --git a/upload/admin/admin_sitemap.php b/upload/admin/admin_sitemap.php new file mode 100644 index 000000000..122178815 --- /dev/null +++ b/upload/admin/admin_sitemap.php @@ -0,0 +1,52 @@ +sql_query($sql)) +{ + bb_die('Could not query config information in admin_sitemap'); +} +else +{ + $new_params = array(); + + while ($row = DB()->sql_fetchrow($result)) + { + $config_name = $row['config_name']; + $config_value = $row['config_value']; + $default_config[$config_name] = $config_value; + $new[$config_name] = isset($_POST[$config_name]) ? $_POST[$config_name] : $default_config[$config_name]; + + if (isset($_POST['submit']) && $row['config_value'] != $new[$config_name]) + { + $new_params[$config_name] = $new[$config_name]; + } + } + + if (isset($_POST['submit'])) + { + if (!empty($new_params)) + { + bb_update_config($new_params); + } + } +} + +$s_mess = $lang['SITEMAP_CREATED'].': '.bb_date($new['sitemap_time'], $bb_cfg['post_date_format']).' '.$lang['SITEMAP_AVAILABLE'].': '.make_url('/sitemap/sitemap.xml').''; +$message = (@file_exists(BB_ROOT. "/sitemap/sitemap.xml")) ? $s_mess : $lang['SITEMAP_NOT_CREATED']; + +$template->assign_vars(array( + 'STATIC_SITEMAP' => $new['static_sitemap'], + 'MESSAGE' => $message, +)); + +print_page('admin_sitemap.tpl', 'admin'); \ No newline at end of file diff --git a/upload/ajax.php b/upload/ajax.php index f6838fbe2..62c742b9f 100644 --- a/upload/ajax.php +++ b/upload/ajax.php @@ -55,6 +55,10 @@ switch ($ajax->action) case 'group_membership': require(INC_DIR . 'functions_group.php'); break; + + case 'sitemap'; + require(INC_DIR .'class.sitemap.php'); + break; } // position in $ajax->valid_actions['xxx'] @@ -78,6 +82,7 @@ class ajax_common 'change_user_opt' => array('admin'), 'manage_user' => array('admin'), 'manage_admin' => array('admin'), + 'sitemap' => array('admin'), 'mod_action' => array('mod'), 'topic_tpl' => array('mod'), @@ -406,4 +411,9 @@ class ajax_common { require(AJAX_DIR . 'chat.php'); } + + function sitemap() + { + require(AJAX_DIR .'sitemap.php'); + } } \ No newline at end of file diff --git a/upload/ajax/sitemap.php b/upload/ajax/sitemap.php new file mode 100644 index 000000000..b5aa40e2a --- /dev/null +++ b/upload/ajax/sitemap.php @@ -0,0 +1,64 @@ +request['mode']; +$map = new sitemap(); +$html = ''; + +switch ($mode) +{ + case 'create': + $map->create(); + if (@file_exists(BB_ROOT. "/sitemap/sitemap.xml")) + { + $html .= $lang['SITEMAP_CREATED'].': '.bb_date(TIMENOW, $bb_cfg['post_date_format']).' '.$lang['SITEMAP_AVAILABLE'].': '.make_url('/sitemap/sitemap.xml').''; + } else { + $html .= $lang['SITEMAP_NOT_CREATED']; + } + break; + + case 'search_update': + if (!@file_exists(BB_ROOT. "/sitemap/sitemap.xml")) + { + $map->create(); + } + + $map_link = make_url('/sitemap/sitemap.xml'); + + if (strpos($map->send_url("http://google.com/webmasters/sitemaps/ping?sitemap=", $map_link), "successfully added") !== false) { + $html .= '
'.$lang['SITEMAP_NOTIFY_SEARCH'].' Google: '.$lang['SITEMAP_SENT'].''; + } else { + $html .= '
'.$lang['SITEMAP_NOTIFY_SEARCH'].' Google: '.$lang['SITEMAP_ERROR'].' URL: http://google.com/webmasters/sitemaps/ping?sitemap='.$map_link.''; + } + + if (strpos($map->send_url("http://ping.blogs.yandex.ru/ping?sitemap=", $map_link), "OK") !== false) { + $html .= '
'.$lang['SITEMAP_NOTIFY_SEARCH'].' Yandex: '.$lang['SITEMAP_SENT'].''; + } else { + $html .= '
'.$lang['SITEMAP_NOTIFY_SEARCH'].' Yandex: '.$lang['SITEMAP_ERROR'].' URL: http://ping.blogs.yandex.ru/ping?sitemap='.$map_link.''; + } + + if ($map->send_url("http://www.bing.com/webmaster/ping.aspx?siteMap=", $map_link)) { + $html .= '
'.$lang['SITEMAP_NOTIFY_SEARCH'].' Bing: '.$lang['SITEMAP_SENT'].''; + } else { + $html .= '
'.$lang['SITEMAP_NOTIFY_SEARCH'].' Bing: '.$lang['SITEMAP_ERROR'].' URL: http://www.bing.com/webmaster/ping.aspx?siteMap='.$map_link.''; + } + + if (strpos($map->send_url("http://rpc.weblogs.com/pingSiteForm?name=InfraBlog&url=", $map_link), "Thanks for the ping") !== false) { + $html .= '
'.$lang['SITEMAP_NOTIFY_SEARCH'].' Weblogs: '.$lang['SITEMAP_SENT'].''; + } else { + $html .= '
'.$lang['SITEMAP_NOTIFY_SEARCH'].' Weblogs: '.$lang['SITEMAP_ERROR'].' URL: http://rpc.weblogs.com/pingSiteForm?name=InfraBlog&url='.$map_link.''; + } + + if ($map->send_url("http://search.yahooapis.com/SiteExplorerService/V1/ping?sitemap=", $map_link)) { + $html .= '
'.$lang['SITEMAP_NOTIFY_SEARCH'].' Yahoo: '.$lang['SITEMAP_SENT'].''; + } else { + $html .= '
'.$lang['SITEMAP_NOTIFY_SEARCH'].' Yahoo: '.$lang['SITEMAP_ERROR'].' URL: http://search.yahooapis.com/SiteExplorerService/V1/ping?sitemap='.$map_link.''; + } + break; +} + +$this->response['html'] = $html; +$this->response['mode'] = $mode; \ No newline at end of file diff --git a/upload/config.php b/upload/config.php index bcde5c7a4..f5de8f9bf 100644 --- a/upload/config.php +++ b/upload/config.php @@ -68,7 +68,7 @@ $domain_name = (!empty($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : $do // Version info $bb_cfg['tp_version'] = '2.0.9 (RC)'; -$bb_cfg['tp_release_date'] = '07-08-2014'; +$bb_cfg['tp_release_date'] = '04-08-2014'; $bb_cfg['tp_release_state'] = 'R593'; // Database diff --git a/upload/includes/class.sitemap.php b/upload/includes/class.sitemap.php new file mode 100644 index 000000000..75fd7a0e0 --- /dev/null +++ b/upload/includes/class.sitemap.php @@ -0,0 +1,229 @@ +home = 'http://'.$bb_cfg['server_name'].'/'; + } + + function build_map () { + $map = "\n\n"; + + $map .= $this->get_static(); + $map .= $this->get_forum(); + $map .= $this->get_topic(); + $map .= ""; + + return $map; + } + + function build_index ($count) { + $map = "\n\n"; + + $lastmod = date("Y-m-d"); + $map .= "\n{$this->home}sitemap/sitemap1.xml\n{$lastmod}\n\n"; + + for ($i = 0; $i < $count; $i++) { + $t = $i + 2; + $map .= "\n{$this->home}sitemap/sitemap{$t}.xml\n{$lastmod}\n\n"; + } + + $map .= ""; + + return $map; + } + + function build_stat () { + $map = "\n\n"; + + $map .= $this->get_static(); + $map .= $this->get_forum(); + $map .= ""; + + return $map; + } + + function build_map_topic ($n) { + $map = "\n\n"; + + $map .= $this->get_topic($n); + $map .= ""; + + return $map; + } + + function get_forum () { + global $datastore; + + $this->priority = $this->cat_priority; + $xml = ""; + $lastmod = date( "Y-m-d" ); + + if (!$forums = $datastore->get('cat_forums')) + { + $datastore->update('cat_forums'); + $forums = $datastore->get('cat_forums'); + } + $not_forums_id = $forums['not_auth_forums']['guest_view']; + + $ignore_forum_sql = ($not_forums_id) ? "WHERE forum_id NOT IN($not_forums_id)" : ''; + + $sql = DB()->sql_query("SELECT forum_id, forum_topics, forum_parent, forum_name FROM ".BB_FORUMS." ".$ignore_forum_sql." ORDER BY forum_id ASC"); + + while ($row = DB()->sql_fetchrow($sql)) { + if (function_exists('seo_url')) $loc = $this->home . seo_url(FORUM_URL . $row['forum_id'], $row['forum_name']); + else $loc = $this->home . FORUM_URL. $row['forum_id']; + $xml .= $this->get_xml( $loc, $lastmod ); + } + + return $xml; + } + + function get_topic ($page = false) { + global $datastore; + + $xml = ""; + $this->priority = $this->topic_priority; + + if ($page) { + $page = $page - 1; + $page = $page * 40000; + $this->limit = " LIMIT {$page},40000"; + } else { + if ($this->limit < 1) $this->limit = false; + if( $this->limit ) { + $this->limit = " LIMIT 0," . $this->limit; + } else { + $this->limit = ""; + } + } + + if (!$forums = $datastore->get('cat_forums')) { + $datastore->update('cat_forums'); + $forums = $datastore->get('cat_forums'); + } + + $not_forums_id = $forums['not_auth_forums']['guest_view']; + $ignore_forum_sql = ($not_forums_id) ? "WHERE forum_id NOT IN($not_forums_id)" : ''; + + $sql = DB()->sql_query("SELECT topic_id, topic_title, topic_time FROM " . BB_TOPICS . " ".$ignore_forum_sql." ORDER BY topic_time DESC" . $this->limit); + + while ($row = DB()->sql_fetchrow($sql)) { + if (function_exists('seo_url')) $loc = $this->home . seo_url(TOPIC_URL . $row['topic_id'], $row['topic_title']); + else $loc = $this->home . TOPIC_URL. $row['topic_id']; + $xml .= $this->get_xml($loc, date("Y-m-d", $row['topic_time'])); + } + + return $xml; + } + + function get_static () { + global $bb_cfg; + + $xml = ""; + $lastmod = date("Y-m-d"); + $this->priority = $this->stat_priority; + + if (isset($bb_cfg['static_sitemap'])) { + $static_url = preg_replace("/\s/", '', $bb_cfg['static_sitemap']); //вырезаем переносы строк + preg_match_all ('#(https?://[\w-]+[\.\w-]+/((?!https?://)[\w- ./?%&=])+)#', $static_url, $out); + + $static_url = count($out['0']); + if ($static_url > 0) + { + foreach($out['0'] as $url) + { + $loc = $url; + $xml .= $this->get_xml($loc, $lastmod); + } + } + } + + return $xml; + } + + function get_xml ($loc, $lastmod) { + $xml = "\t\n"; + + $xml .= "\t\t$loc\n"; + $xml .= "\t\t$lastmod\n"; + $xml .= "\t\t" . $this->priority . "\n"; + $xml .= "\t\n"; + + return $xml; + } + + function send_url ($url, $map) { + $data = false; + $file = $url.urlencode($map); + + if (function_exists('curl_init')) { + $ch = curl_init(); + + curl_setopt($ch, CURLOPT_URL, $file); + curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 6); + + $data = curl_exec($ch); + curl_close($ch); + + return $data; + } else { + return @file_get_contents($file); + } + } + + function create () { + $row = DB()->fetch_row("SELECT COUNT(*) AS count FROM ". BB_TOPICS); + + if (!$this->limit) $this->limit = $row['count']; + if ($this->limit > 40000) { + $pages_count = @ceil($row['count'] / 40000); + + $sitemap = $this->build_index($pages_count); + + $handler = fopen(BB_ROOT. "/sitemap/sitemap.xml", "wb+"); + fwrite($handler, $sitemap); + fclose($handler); + @chmod(BB_ROOT. "/sitemap/sitemap.xml", 0666); + + $sitemap = $this->build_stat(); + + $handler = fopen(BB_ROOT. "/sitemap/sitemap1.xml", "wb+"); + fwrite($handler, $sitemap); + fclose($handler); + @chmod(BB_ROOT. "/sitemap/sitemap.xml", 0666); + + for ($i = 0; $i < $pages_count; $i++) { + $t = $i + 2; + $n = $i + 1; + + $sitemap = $this->build_map_topic($n); + $handler = fopen(BB_ROOT. "/sitemap/sitemap{$t}.xml", "wb+"); + fwrite($handler, $sitemap); + fclose($handler); + @chmod(BB_ROOT. "/sitemap/sitemap{$t}.xml", 0666); + } + } else { + $sitemap = $this->build_map(); + + $handler = fopen(BB_ROOT. "/sitemap/sitemap.xml", "wb+"); + fwrite($handler, $sitemap); + fclose($handler); + @chmod(BB_ROOT. "/sitemap/sitemap.xml", 0666); + } + + $params['sitemap_time'] = TIMENOW; + bb_update_config($params); + } +} \ No newline at end of file diff --git a/upload/includes/cron/jobs/sitemap.php b/upload/includes/cron/jobs/sitemap.php new file mode 100644 index 000000000..5d9e55ae3 --- /dev/null +++ b/upload/includes/cron/jobs/sitemap.php @@ -0,0 +1,19 @@ +create(); + +if (@file_exists(BB_ROOT. "/sitemap/sitemap.xml")) +{ + $map_link = make_url('/sitemap/sitemap.xml'); + + $map->send_url("http://google.com/webmasters/sitemaps/ping?sitemap=", $map_link); + $map->send_url("http://ping.blogs.yandex.ru/ping?sitemap=", $map_link); + $map->send_url("http://www.bing.com/webmaster/ping.aspx?siteMap=", $map_link); + $map->send_url("http://rpc.weblogs.com/pingSiteForm?name=InfraBlog&url=", $map_link); + $map->send_url("http://search.yahooapis.com/SiteExplorerService/V1/ping?sitemap=", $map_link); +} \ No newline at end of file diff --git a/upload/language/en/main.php b/upload/language/en/main.php index 65aff8699..d8d78449a 100644 --- a/upload/language/en/main.php +++ b/upload/language/en/main.php @@ -2972,4 +2972,25 @@ $lang['MC_COMMENT'] = array( 'title' => 'Violation from %s', 'type' => 'Violation', ), -); \ No newline at end of file +); + +$lang['SITEMAP'] = 'Sitemap'; +$lang['SITEMAP_ADMIN'] = 'Manage sitemap'; +$lang['SITEMAP_CREATED'] = 'Sitemap created'; +$lang['SITEMAP_AVAILABLE'] = 'and is available at'; +$lang['SITEMAP_NOT_CREATED'] = 'Sitemap is not yet created'; +$lang['SITEMAP_NOTIFY_SEARCH'] = 'Notification of the search engine'; +$lang['SITEMAP_SENT'] = 'send completed'; +$lang['SITEMAP_ERROR'] = 'sending error'; +$lang['SITEMAP_OPTIONS'] = 'Options'; +$lang['SITEMAP_CREATE'] = 'Create / update the sitemap'; +$lang['SITEMAP_NOTIFY'] = 'Notify search engines about new version of sitemap'; +$lang['SITEMAP_WHAT_NEXT'] = 'What to do next?'; +$lang['SITEMAP_GOOGLE_1'] = 'Register your site at Google Webmaster using your Google account.'; +$lang['SITEMAP_GOOGLE_2'] = 'Add sitemap of site you registered.'; +$lang['SITEMAP_YANDEX_1'] = 'Register your site at Yandex Webmaster using your Yandex account.'; +$lang['SITEMAP_YANDEX_2'] = 'Add sitemap of site you registered.'; +$lang['SITEMAP_ADD_TITLE'] = 'Additional pages for sitemap'; +$lang['SITEMAP_ADD_PAGE'] = 'Additional pages'; +$lang['SITEMAP_ADD_EXP_1'] = 'You can specify additional pages on your site (for example, http://torrentpier.me/memberlist.php) which should be included in your sitemap file that you creating.'; +$lang['SITEMAP_ADD_EXP_2'] = 'Each reference must begin with http(s):// and a new line!'; diff --git a/upload/language/ru/main.php b/upload/language/ru/main.php index 544f96749..cc533a26a 100644 --- a/upload/language/ru/main.php +++ b/upload/language/ru/main.php @@ -2972,4 +2972,25 @@ $lang['MC_COMMENT'] = array( 'title' => 'Нарушение от %s', 'type' => 'Нарушение', ), -); \ No newline at end of file +); + +$lang['SITEMAP'] = 'Карта сайта (sitemap)'; +$lang['SITEMAP_ADMIN'] = 'Управление картой сайта (sitemap)'; +$lang['SITEMAP_CREATED'] = 'Файл sitemap создан'; +$lang['SITEMAP_AVAILABLE'] = 'и доступен по адресу'; +$lang['SITEMAP_NOT_CREATED'] = 'Файл sitemap еще не создан'; +$lang['SITEMAP_NOTIFY_SEARCH'] = 'Уведомление поисковой системы'; +$lang['SITEMAP_SENT'] = 'отправка завершена'; +$lang['SITEMAP_ERROR'] = 'ошибка отправки'; +$lang['SITEMAP_OPTIONS'] = 'Опции'; +$lang['SITEMAP_CREATE'] = 'Создать / обновить файл sitemap'; +$lang['SITEMAP_NOTIFY'] = 'Уведомить поисковые системы о наличии новой версии файла sitemap'; +$lang['SITEMAP_WHAT_NEXT'] = 'Что сделать дальше?'; +$lang['SITEMAP_GOOGLE_1'] = 'Зарегистрируйте ваш сайт в Google Webmaster с использованием вашей учетной записи Google.'; +$lang['SITEMAP_GOOGLE_2'] = 'Добавьте файл sitemap зарегистрированного вами сайта.'; +$lang['SITEMAP_YANDEX_1'] = 'Зарегистрируйте ваш сайт в Yandex Webmaster с использованием вашей учетной записи Yandex.'; +$lang['SITEMAP_YANDEX_2'] = 'Добавьте файл sitemap зарегистрированного вами сайта.'; +$lang['SITEMAP_ADD_TITLE'] = 'Дополнительные страницы для sitemap'; +$lang['SITEMAP_ADD_PAGE'] = 'Дополнительные страницы'; +$lang['SITEMAP_ADD_EXP_1'] = 'Здесь вы можете указать дополнительные страницы сайта (например http://torrentpier.me/memberlist.php), которые должны быть включены в создаваемый файл вами файл sitemap.'; +$lang['SITEMAP_ADD_EXP_2'] = 'Каждая ссылка должна начинаться с http(s):// и новой строки!'; diff --git a/upload/language/ua/main.php b/upload/language/ua/main.php index 98635f753..2ca50eaef 100644 --- a/upload/language/ua/main.php +++ b/upload/language/ua/main.php @@ -2972,4 +2972,25 @@ $lang['MC_COMMENT'] = array( 'title' => 'Порушення від %s', 'type' => 'Порушення', ), -); \ No newline at end of file +); + +$lang['SITEMAP'] = 'Карта сайту (sitemap)'; +$lang['SITEMAP_ADMIN'] = 'Управління картою сайту (sitemap)'; +$lang['SITEMAP_CREATED'] = 'Файл sitemap створений'; +$lang['SITEMAP_AVAILABLE'] = 'і доступний за адресою'; +$lang['SITEMAP_NOT_CREATED'] = 'Файл sitemap ще не створено'; +$lang['SITEMAP_NOTIFY_SEARCH'] = 'Повідомлення пошукової системи'; +$lang['SITEMAP_SENT'] = 'відправка завершена'; +$lang['SITEMAP_ERROR'] = 'помилка відсилання'; +$lang['SITEMAP_OPTIONS'] = 'Опції'; +$lang['SITEMAP_CREATE'] = 'Створити / оновити файл sitemap'; +$lang['SITEMAP_NOTIFY'] = 'Повідомити пошукові системи про наявність нової версії файлу sitemap'; +$lang['SITEMAP_WHAT_NEXT'] = 'Що зробити далі?'; +$lang['SITEMAP_GOOGLE_1'] = 'Зареєструйте ваш сайт в Google Webmaster з використанням вашого облікового запису Google.'; +$lang['SITEMAP_GOOGLE_2'] = 'Додайте файл sitemap зареєстрованого вами сайту.'; +$lang['SITEMAP_YANDEX_1'] = 'Зареєструйте ваш сайт в Yandex Webmaster з використанням вашого облікового запису Yandex.'; +$lang['SITEMAP_YANDEX_2'] = 'Додайте файл sitemap зареєстрованого вами сайту.'; +$lang['SITEMAP_ADD_TITLE'] = 'Додаткові сторінки для sitemap'; +$lang['SITEMAP_ADD_PAGE'] = 'Додаткові сторінки'; +$lang['SITEMAP_ADD_EXP_1'] = 'Тут ви можете вказати додаткові сторінки сайту (наприклад http://torrentpier.me/memberlist.php), які повинні бути включені в створюваний файл вами файл sitemap.'; +$lang['SITEMAP_ADD_EXP_2'] = 'Кожне посилання має починатись з http(s):// і нової рядки!'; diff --git a/upload/sitemap/.keep b/upload/sitemap/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/upload/templates/admin/admin_sitemap.tpl b/upload/templates/admin/admin_sitemap.tpl new file mode 100644 index 000000000..675f64548 --- /dev/null +++ b/upload/templates/admin/admin_sitemap.tpl @@ -0,0 +1,122 @@ + + + + +

{L_SITEMAP_ADMIN}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
{L_INFORMATION}:
{MESSAGE}
{L_SITEMAP_OPTIONS}: + {L_SITEMAP_CREATE}   + {L_SITEMAP_NOTIFY}
+
+
{L_SITEMAP_WHAT_NEXT}
+

1. {L_SITEMAP_GOOGLE_1}

+

2. {L_SITEMAP_GOOGLE_2}

+

3. {L_SITEMAP_YANDEX_1}

+

4. {L_SITEMAP_YANDEX_2}

+
{L_SITEMAP_ADD_TITLE}
+ {L_SITEMAP_ADD_PAGE}: + +
+

{L_SITEMAP_ADD_EXP_1} {L_SITEMAP_ADD_EXP_2}

+
+    + +
+
\ No newline at end of file