phpBB Google Sitemap Gen

Изучая различные материалы по SEO узнал о существовании файла sitemap, который используют некоторые поисковые роботы для оптимизации индексирования страниц. Хотя почитав форумы и отзывы, сложилось впечатление, что эффект от размещения данного файла не слишком велик, но ничто не мешает его использовать — больше не значит хуже.
Синтаксис файла довольно прост и представляет собой обычный xml-файл с небольшим количеством стандартных тегов, которые описывают каждую страницу в виде ссылки с дополнительными параметрами, из которых особый интерес представляют – частота обновления (<changefreq>) и приоритет (<priority>). Подробно можно почитать на гугле или на официальном сайте протокола.
Сайтом, который был взят как тестовый стенд, но с реальной информацией и определенной посещаемостью, стал – www.v13.ru. Так как это сайт игровой гильдии, то как такового контента на нём нет, но есть форум и несколько страниц с дополнительными игровыми модулями (DKP-таблицы и запись на рейды). И тут я столкнулся с первой проблемой – как отображать в одном sitemap файле статичную и динамическую информацию (ссылки на разделы сайта и ссылки на топики форума).
Всё оказалось довольно просто – помимо самого sitemap, есть так называемый sitemapindex – который ссылается на другие файлы sitemap, но находится все файлы должны в пределах одного домена.
Следующее, что заставило задуматься – как получить файл sitemap для форума phpBB, на котором около десяти разделов и более тысячи топиков. Понятное дело, что делать это руками – дело глупое и неблагодарное, поэтому был применен поиск и найдены несколько скриптов, которые создают файл из данных БД, но при ближайшем рассмотрении все они были отброшены, потому как либо делали слишком много лишнего (неоптимизированные запросы к БД), либо требовали доработки (привязка с имени таблиц по умолчанию).
Решено было написать свой скрипт, который можно скачать по ссылке (phpBB sitemap gen v.0.0.8.rar).

Что его отличает от аналогичных скриптов?

· Автоматическое определение УРЛ форума и имён таблиц в БД

· Выдача разделов и топиков форума

· Определение частоты обновления и приоритета топиков

· Установка простым копированием файла скрипта

Когда писал скрипт, то задумался – по какому критерию определить частоту обновления и приоритет для каждого топика. В итоге решил вычислять частоту обновления от даты последнего комментария (<7 дней – daily, <30 – weekly и т.д.), а приоритет в зависимости от количества просмотров топика в отношении к среднему и максимальному количеству просмотров на форуме.

=========================
Изменения в версии v.0.0.7:
1. Исправлен баг в работе скрипта, при наличии мода Advanced post merging
2. Добавлен учет топиков «прикрепленных» и «объявлений» (+0.1 приоритет)
3. Исправлен баг с доп. слешем (‘/’) в УРЛ
4. Скрытые и не доступные для публичного доступа разделы форума не попадают в сайтмап.
5. Версия пространства имён обновлена до последней (0.9) версии (xmlns=»http://www.sitemaps.org/schemas/sitemap/0.9″)
=========================

Пока что есть пара идей по доработке скрипта — выдача файлов в архивированном (.gz) формате, а так же разбивка на несколько sitemap, если количество топиков > 50000, возможно добавление информации по пользователям.
Все вопросы и пожелания в комментарии или на почту.

phpBB Google Sitemap Gen: 44 комментария

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

    Этот sitemap гугловцы придумали, чтобы их пауку было удобнее индексировать сайты, и чтобы ни одна страничка не пропускалась при индексации. Так что задумка неплохая и действует.

  2. Кстати говоря, не только гугл использует sitemap.
    Пока изучал этот вопрос, наткнулся на сайт, который оповещает (ping) поисковые системы об обновлении sitemap. Там помимо google, присутствуют Yahoo!, askme.com, moreover.com(=MSN), т.ч. пользы ещё больше)
    К тому же на форуме phpbbguru.net подали пару идей по улучшению скрипта.

  3. А вот это уже настораживает.
    Какой версии у вас движок форума? (Я тестировал под 2.0.x)
    Если у вас версия из 3.х, то возможно там несколько другие названия полей.

    Можно ли получить результаты следующих запросов (через phpmyadmin, например)
    describe вашпрефиксфорума_posts
    describe вашпрефиксфорума_topics

    ?

  4. странно, по идее данные берутся из конфига, поэтому вне зависимости от того, какой префикс, запрос должен быть верным. И всё же, если можно, хотелось бы глянуть на describe.

  5. DESCRIBE community_posts;# Ряды: 13
    DESCRIBE community_topics;# Ряды: 13
    Может Ваш мод конкурирует с другими модами?
    Цитата:»странно, по идее данные берутся из конфига, поэтому вне зависимости от того, какой префикс, запрос должен быть верным. И всё же, если можно, хотелось бы глянуть на describe.»
    Да,это я уже увидел в вашем коде,может просто эти переменные заменить на мои константы,т.е вместо $название переменной,просто вставить community?Обидно,что ваш мод у меня не работает,наверно из-за кофликта с другими модами,думаю это никак не повляет этот мод имеет chmod 755(777 у меня запрещён) и лежит в папке public_html/forum/.Кстати под phpbb3 аналогичный мод уже есть.
    С уважением,
    ecolog

  6. Поддерживаю ecolog.

    Ошибка Unknown column ‘post_created’ in ‘field list’

    выпадает после
    $sql = «SELECT t.topic_id, topic_views, DATE_FORMAT(FROM_UNIXTIME(IFNULL(post_edit_time, post_created)), ‘%Y-%m-%d’) as lastdate,
    DATEDIFF( FROM_UNIXTIME( UNIX_TIMESTAMP( ) ) , FROM_UNIXTIME( IFNULL( post_edit_time, post_created ) ) ) as datedif
    FROM «.$table_prefix.’topics as t, ‘.$table_prefix.’posts as p WHERE (t.topic_last_post_id = p.post_id)’;

    реально в таблице нет такого поля

    post_id mediumint(8) unsigned NOT NULL auto_increment,
    topic_id mediumint(8) unsigned NOT NULL default ‘0’,
    forum_id smallint(5) unsigned NOT NULL default ‘0’,
    poster_id mediumint(8) NOT NULL default ‘0’,
    post_time int(11) NOT NULL default ‘0’,
    poster_ip char(8) NOT NULL,
    post_username varchar(25) default NULL,
    enable_bbcode tinyint(1) NOT NULL default ‘1’,
    enable_html tinyint(1) NOT NULL default ‘0’,
    enable_smilies tinyint(1) NOT NULL default ‘1’,
    enable_sig tinyint(1) NOT NULL default ‘1’,
    post_edit_time int(11) default NULL,
    post_edit_count smallint(5) unsigned NOT NULL default ‘0’,

  7. 2ecolog, да, видимо либо версия форума у меня старая (может там другие именования столбцов таблицы), либо у вас какой-то мод. Попробуйте прописать жёсткие названия таблиц + переименовать столбец «post_created => post_time», как советует андрей

    2андрей, спасибо за поправку. В скором времени обновлю форум и займусь модификацией мода. Поэтому следите за обновлениями. И пользуйтесь на здоровье)

  8. только гуглу что-то не нра 🙁
    Ошибки
    Строка: 336 Ошибка разбора
    Мы не смогли прочитать Ваш Sitemap. Возможно, он содержит нераспознаваемую для нас запись. Проверьте свой Sitemap перед тем, как передать его повторно. [?] Дата появления: 14.08.2007

  9. У меня Google при проверке файла sitemap.php пишет «Неправильный тег XML
    Этот тег не удалось распознать. Исправьте его и повторите передачу.
    Родительский тег: urlset
    Тег: br
    Родительский тег: urlset
    Тег: b «

  10. если с расширением *.xml то выдаёт Ошибка синтаксического анализа XML: неправильный
    Адрес: http://www.krasnodon.net.ua/forum/sitemap.xml
    Строка 30, символ 27:

    а Google пишет Неподдерживаемый формат файла

    если с расширением *.php то Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/krasnodo/public_html/forum/sitemap.php on line 92

    а Google пишет Неправильный тег XML
    Этот тег не удалось распознать. Исправьте его и повторите передачу.
    Родительский тег: urlset
    Тег: br
    Родительский тег: urlset
    Тег: b “

  11. Сорри, форум нашел 🙂 Все выглядит правильно

    //Выводим ссылку на топик, приоритет, дату последнего обновления, частоту обновлений
    $sql = «SELECT t.topic_id, topic_views, DATE_FORMAT(FROM_UNIXTIME(IFNULL(post_edit_time, post_created)), ‘%Y-%m-%d’) as lastdate,
    DATEDIFF( FROM_UNIXTIME( UNIX_TIMESTAMP( ) ) , FROM_UNIXTIME( IFNULL( post_edit_time, post_created ) ) ) as datedif
    FROM «.$table_prefix.’topics as t, ‘.$table_prefix.’posts as p WHERE (t.topic_last_post_id = p.post_id)’;

    замени на

    //Выводим ссылку на топик, приоритет, дату последнего обновления, частоту обновлений
    $sql = «SELECT t.topic_id, topic_views, DATE_FORMAT(FROM_UNIXTIME(IFNULL(post_edit_time, post_time )), ‘%Y-%m-%d’) as lastdate,
    DATEDIFF( FROM_UNIXTIME( UNIX_TIMESTAMP( ) ) , FROM_UNIXTIME( IFNULL( post_edit_time, post_time ) ) ) as datedif
    FROM «.$table_prefix.’topics as t, ‘.$table_prefix.’posts as p WHERE (t.topic_last_post_id = p.post_id)’;

  12. андрей, спасибо за помощь
    заменил теперь Google выдаёт при проверке Неподдерживаемый формат файла

    а при запуске файла выдаёт Parse error: syntax error, unexpected T_STRING in /home/krasnodo/public_html/forum/sitemap.php on line 86

    это строка из замены $sql = “SELECT t.topic_id, ………

  13. По поводу post_time/post_created
    Возможно у Tapacа стоит Advanced post merging и мод заточен под APM. Потому что именно он добавляет такое поле. В стандартной поставке такого поля нет, есть post_time (см. \install\schemas из дистрибутива).

    2 Tapac
    Кстати, обновлённую версию можно будет увидеть на phpBB Guru?
    С уважением, VVVas.

  14. 2андрей, спасибо за оперативную поддержку пользователей) Обязательно упомяну тебя в следующей версии скрипта.

    2VVVas, да, ты совершенно прав по поводу Advanced post merging, т.к. мод довольно популярный, то наверное добавлю проверку на наличие поля.
    В обязательном порядке выложу обновленную версию на пхпббгуру

    2Игорь, данный сайтмап тоже верен, но в нём отсутствуют дополнительные поля, которые могут помочь гуглу лучше индексировать страницы.

    2forall, спасибо за нахождения бага, добавлю проверку на слеши и спец символы.

    2Все, к сожалению был на отдыхе в дали от компьютера, т.ч. не мог своевременно отвечать и исправлять баги.
    В ближайшее время (неделя-две) постараюсь докончить новую версию с учётом всех исправлений и добавлю пару нововведений.
    Всем спасибо за багтестинг)

  15. Если вы хотите оповестить только Гугл, то лучший способ зарегистрироваться на https://www.google.com/webmasters/tools/ и, добавив свой сайт, указать путь к его сайтмапу.

    Ещё удобный вариант — http://www.sitemapwriter.com/notify.php?lang=ru — тут пинг идёт сразу на 4 поисковика.

  16. Хочу поблагодарить автора за очень нужный и полезный мод.
    Но все бы хорошо, если бы не это:
    локально работает, проблем нет, но в инете полностью работать отказывается, в sitemap выводит только перечень разделов и форумов, а перечень тем выводить отказывается.
    вот смотрите сами: http://belorus.by/forum/sitemap.xml
    В чем может быть проблема?

  17. Уведомление: Ricciardo
  18. [url=http://loanlending.info/sarah-michelle-gellar/][b]FREE Sarah Michelle Gellar Sex Scenes Download[/b][/url]

    [url=http://loanlending.info/sarah-michelle-gellar/] [img]http://aitcostamhome.info/celeb/sarah-michelle-gellar/2.jpg[/img] [img]http://aitcostamhome.info/celeb/sarah-michelle-gellar/4.jpg[/img] [img]http://aitcostamhome.info/celeb/sarah-michelle-gellar/5.jpg[/img] [/url]

    [url=http://loanlending.info/celeb/][b]FREE Celebrities Sex Tapes and Scenes[/b][/url]

    [B]Related Keywords, Tags: [/B]
    Sarah Michelle Gellar Nude
    Sarah Michelle Gellar In Cruel Intentions
    Naked Sarah Michelle Gellar
    Sarah Michelle Gellar As Buffy
    Photos Sarah Michelle Gellar
    Sarah Michelle Gellar Photo
    Sarah Michelle Gellar Quote Women Thin
    Pics Of Sarah Michelle Gellar
    Sarah Michelle Gellar Harvard Man Opening Credits
    Sarah Michelle Gellar Layouts
    Pictures Of Sarah Michelle Gellar Tatoo
    Sarah Michelle Gellar See Through
    Sex Video Of Sarah Michelle Gellar
    Buffy Sarah Michelle Gellar
    Sarah Michelle Gellar And Jennifer Love Hewitt
    Sarah Michelle Gellar Signed Autograph
    Fantasy Of Sarah Michelle Gellar
    Sarah Michelle Gellar Making The Video Dirrty
    Sarah Michelle Gellar Fucking In Southland Tales Video Clips
    Sarah Michelle Gellar Megaupload
    Sarah Michelle Gellar Sites Web
    Sarah Michelle Gellar Magazine Covers
    Sarah Michelle Gellar Wedding Dress
    Sarah Michelle Gellar Bound And Gagged
    Sarah Michelle Gellar And Vinny Chase
    Simply Irresistible Sarah Michelle Gellar
    Sarah Michelle Gellar Profil
    Alice In Wonderland Sarah Michelle Gellar
    Sarah Michelle Gellar Lot
    Sarah Michelle Gellar History Mtv Awards With Jack Black
    Sarah Michelle Gellar Scene
    Sarah Michelle Gellar Cruel Intentions 2
    Sarah Michelle Gellar Sex Scene Clip Cruel Intentions
    Free Online Nude Pics Sarah Michelle Gellar
    Porno Sarah Michelle Gellar
    Sarah Michelle Gellar Nude Pic
    Bound Gagged Sarah Michelle Gellar Pictures
    Kelly Ripa And Sarah Michelle Gellar
    Sarah Michelle Gellar In Purple
    Sarah Michelle Gellar Pieds
    Sarah Michelle Gellar Footnotes
    Sarah Michelle Gellar Buffy Pics
    Sarah Michelle Gellar Xxl
    Sarah Michelle Gellar Sex Tapes
    Sarah Michelle Gellar Michelle Gellar
    Sarah Michelle Gellar Embarazada
    Kidnapped Sarah Michelle Gellar
    Sarah Michelle Gellar Chirurgie Esth?tique
    Sarah Michelle Gellar Fucking Scooby Doo Pic
    Sarah Michelle Gellar Martial Arts

  19. Уведомление: my review here

Добавить комментарий