Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

sitemap

Skywrath
сообщение 30.8.2015, 8:06
Сообщение #1
Стаж: 11 лет

Сообщений: 1058
Благодарностей: 419
Полезность: < 0

Вообщем ситуация такая, имеется движок сайта (самопис).
Собственно сам вопрос, есть ли какой не будь php скрипт который автоматически создаёт sitemap.xml, и брал информацию с БД. Перерыл весь гугл, там полно всяких скриптов, но черт ногу сломит, пока разберешься, как они работают.
Я думаю все подробно объяснил.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя onotole
сообщение 30.8.2015, 11:07
Сообщение #2


Иконка группы

Стаж: 13 лет

Сообщений: 1572
Благодарностей: 1119
Полезность: 1550

Меценат Меценат

PHp прям такой умный, что достаточно одного скрипта, который сам будет определять, какие таблицы в базе за что отвечают, как их выводить, и какие поля этих таблиц являются теми, которые нужно писать в сайтмап.
Не существует и не может существовать универсального средства.
Была программа Sitemap Generator. В нее указываешь адрес сайта, и она сканирует ссылки сайта и на основе их делает сайтмап. Других вариантов нет и быть не может. Тем более для самописного сайта
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Skywrath
сообщение 30.8.2015, 13:35
Сообщение #3
Стаж: 11 лет

Сообщений: 1058
Благодарностей: 419
Полезность: < 0

onotole,
а что на счет этого скажешь?
Код:
<?php
// подключение к БД
$connect = mysql_connect("host","usr","pwd") or die('No connection');
mysql_query('SET NAMES utf8');
mysql_select_db("db_name",$connect) or die('No connection!');

// указываем заголовок XML документа, говоря ему о том, что это SITEMAP.XML
$s_map = '<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9

http://www.sitemaps.org/schemas/sitemap/0....r\n";

// указываем главную страницу сайта
$s_map .= '
<url>
<loc>http://www.site.com/</loc>
<lastmod>'.date("Y-m-d\TH:i:s+02:00").'</lastmod>
<changefreq>weekly</changefreq>
<priority>1.00</priority>
</url>'."\r\n";

// тут нужно получить ссылку на страницу
$query = "SELECT * FROM tabe";
$result = mysql_query($query);
$num_result = mysql_num_rows($result);
for ($i=0;$i<$num_result;$i++)
{
$row = mysql_fetch_array($result);
$s_map .= '<url>'."\r\n";
$s_map .= '<loc>http://www.site.com/'.$row["url"].'</loc>'."\r\n";
$s_map .= '<changefreq>weekly</changefreq>'."\r\n";
$s_map .= '<priority>0.50</priority>'."\r\n";
$s_map .= '</url>'."\r\n";
}
$s_map .= '</urlset>';

// запись в файл
$file_name = 'sitemap.xml';
$one_file = fopen($file_name,"w");
fwrite($one_file,$sm_br);
fclose($one_file);
?>
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя onotole
сообщение 30.8.2015, 14:51
Сообщение #4


Иконка группы

Стаж: 13 лет

Сообщений: 1572
Благодарностей: 1119
Полезность: 1550

Меценат Меценат

Цитата(Skywrath @ 30.8.2015, 14:30) *
onotole,
а что на счет этого скажешь?
Код:
<?php
// подключение к БД
$connect = mysql_connect("host","usr","pwd") or die('No connection');
mysql_query('SET NAMES utf8');
mysql_select_db("db_name",$connect) or die('No connection!');

// указываем заголовок XML документа, говоря ему о том, что это SITEMAP.XML
$s_map = '<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9

http://www.sitemaps.org/schemas/sitemap/0....r\n";

// указываем главную страницу сайта
$s_map .= '
<url>
<loc>http://www.site.com/</loc>
<lastmod>'.date("Y-m-d\TH:i:s+02:00").'</lastmod>
<changefreq>weekly</changefreq>
<priority>1.00</priority>
</url>'."\r\n";

// тут нужно получить ссылку на страницу
$query = "SELECT * FROM tabe";
$result = mysql_query($query);
$num_result = mysql_num_rows($result);
for ($i=0;$i<$num_result;$i++)
{
$row = mysql_fetch_array($result);
$s_map .= '<url>'."\r\n";
$s_map .= '<loc>http://www.site.com/'.$row["url"].'</loc>'."\r\n";
$s_map .= '<changefreq>weekly</changefreq>'."\r\n";
$s_map .= '<priority>0.50</priority>'."\r\n";
$s_map .= '</url>'."\r\n";
}
$s_map .= '</urlset>';

// запись в файл
$file_name = 'sitemap.xml';
$one_file = fopen($file_name,"w");
fwrite($one_file,$sm_br);
fclose($one_file);
?>

Вариант, если по одной таблице выбирать, и поля существуют
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Skywrath
сообщение 30.8.2015, 15:10
Сообщение #5
Стаж: 11 лет

Сообщений: 1058
Благодарностей: 419
Полезность: < 0

onotole,
Блин(
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя grey
сообщение 30.8.2015, 22:09
Сообщение #6


Стаж: 15 лет

Сообщений: 1785
Благодарностей: 1098
Полезность: 675

Цитата(Skywrath @ 30.8.2015, 14:30) *
onotole,
а что на счет этого скажешь?
Код:
<?php
// подключение к БД
$connect = mysql_connect("host","usr","pwd") or die('No connection');
mysql_query('SET NAMES utf8');
mysql_select_db("db_name",$connect) or die('No connection!');

// указываем заголовок XML документа, говоря ему о том, что это SITEMAP.XML
$s_map = '<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9

http://www.sitemaps.org/schemas/sitemap/0....r\n";

// указываем главную страницу сайта
$s_map .= '
<url>
<loc>http://www.site.com/</loc>
<lastmod>'.date("Y-m-d\TH:i:s+02:00").'</lastmod>
<changefreq>weekly</changefreq>
<priority>1.00</priority>
</url>'."\r\n";

// тут нужно получить ссылку на страницу
$query = "SELECT * FROM tabe";
$result = mysql_query($query);
$num_result = mysql_num_rows($result);
for ($i=0;$i<$num_result;$i++)
{
$row = mysql_fetch_array($result);
$s_map .= '<url>'."\r\n";
$s_map .= '<loc>http://www.site.com/'.$row["url"].'</loc>'."\r\n";
$s_map .= '<changefreq>weekly</changefreq>'."\r\n";
$s_map .= '<priority>0.50</priority>'."\r\n";
$s_map .= '</url>'."\r\n";
}
$s_map .= '</urlset>';

// запись в файл
$file_name = 'sitemap.xml';
$one_file = fopen($file_name,"w");
fwrite($one_file,$sm_br);
fclose($one_file);
?>



Я всегда делаю по примерно такой же схеме. только залезанию в каждую таблицу с определенными условиями.. ну и вытягиваю ID (или чпу всегда по разному) для урлов


---
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Skywrath
сообщение 30.8.2015, 22:24
Сообщение #7
Стаж: 11 лет

Сообщений: 1058
Благодарностей: 419
Полезность: < 0

grey,
а не такого бы что считывал все таблицы?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя grey
сообщение 30.8.2015, 22:37
Сообщение #8


Стаж: 15 лет

Сообщений: 1785
Благодарностей: 1098
Полезность: 675

Цитата(Skywrath @ 30.8.2015, 23:19) *
grey,
а не такого бы что считывал все таблицы?

Это немного глупо.. каждый веб разработчик создает таблицы по своему удобству, формирует урлы по своему. Есть куча исключений и не все таблицы нужно ботам отдавать. К примеру если новость скрытая или еще что-то. Нужно делать генератор именно под твой движок сайта.

п.с. ты бы скинул дамп своей БД с 2-3 некоторыми инсертами ( не обязательно ) , возможно кто нибудь и написал бы тебе карту сайта

Отредактировал: grey, - 30.8.2015, 22:44


---
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: