Sitemap Forums — XML-карта сайта для модуля Forums
Плагин для Cotonti Генерирует XML-карту сайта (sitemap) только для форума (разделы, темы и, опционально, отдельные посты).
Помогает поисковым системам быстрее находить и индексировать все страницы форума.
Sitemap Forums — XML-карта сайта для модуля Forums
Плагин для Cotonti Генерирует XML-карту сайта (sitemap) только для форума (разделы, темы и, опционально, отдельные посты). Помогает поисковым системам быстрее находить и индексировать все страницы форума.
Этот плагин — часть проекта по разделению стандартного плагина SiteMap (входящего в комплект Cotonti) на несколько независимых плагинов.
Оригинальный SiteMap генерировал одну большую карту для всего сайта сразу: страницы, форум, пользователи, товары. При любых изменениях или ошибках в одном из разделов приходилось «чинить» весь плагин целиком, что часто приводило к поломкам всей карты.
Чтобы избежать этой проблемы, было решено разбить единый плагин на специализированные, каждый из которых отвечает только за свой тип контента:
sitemap_forums – XML-карта форумов (этот плагин)
sitemap_pages – XML-карта страниц (с мультиязычной поддержкой)
sitemap_users – XML-карта профилей пользователей
sitemap_market – XML-карта товаров (модуль Market)
Каждый плагин полностью автономен, настраивается отдельно и не влияет на работу других. Такой подход упрощает поддержку и позволяет гибко управлять картами сайта.
sitemap_forums создан на основе кода оригинального SiteMap, но полностью переработан специально для модуля forums и адаптирован под PHP 8.x.
Возможности
Генерирует XML-карту для:
разделов форума (категорий) с пагинацией списков тем,
тем (топиков) с пагинацией постов внутри каждой темы,
отдельных постов (сообщений) — опционально, включается в настройках.
Автоматически разбивает карту на несколько файлов (sitemap index), если общее число ссылок превышает заданный лимит (perpage).
При установке автоматически добавляет ссылки на карту в robots.txt.
При установке автоматически добавляет правила rewrite в .htaccess для красивых URL (если активен плагин URLEditor).
Кеширует готовые карты в файлы для быстрой отдачи.
Гибкие настройки: частота обновления, приоритет для страниц форума.
Полная совместимость с PHP 8.x.
Требования
Cotonti Siena (рекомендуется актуальная версия)
Модуль forums — должен быть установлен и активен
Плагин urleditor — если планируете использовать красивые URL (sitemap-forums.xml)
Права на запись в папку datas/cache/ (для кеширования карт)
PHP 8.0 или выше
Структура плагина
sitemap_forums/
├── sitemap_forums.setup.php # Заголовок, метаданные и настройки плагина
├── sitemap_forums.ajax.php # Главный обработчик запросов (AJAX)
├── inc/
│ └── sitemap_forums.functions.php # Функции: сжатие XML, работа с датами, сохранение карт
├── lang/
│ ├── sitemap_forums.ru.lang.php # Русские подписи к настройкам
│ └── sitemap_forums.en.lang.php # Английские подписи к настройкам
├── tpl/
│ ├── sitemap_forums.tpl # Шаблон для обычного urlset
│ └── sitemap_forums.index.tpl # Шаблон для индексного файла (sitemapindex)
└── setup/
└── sitemap_forums.install.php # Автоматическое добавление ссылок в robots.txt
# и правил в .htaccess при установке
Распакуйте архив в папку plugins/ вашего сайта. Должна получиться структура, описанная выше.
Зайдите в админ-панель Cotonti → Расширения.
Найдите в списке плагин «Forums Sitemap» и нажмите «Установить».
Важно: При установке плагин автоматически:
Добавит ссылки на карту форума в robots.txt.
Добавит правила rewrite в .htaccess для красивых URL (только если активен URLEditor и если этих правил ещё нет).
После установки плагин сразу начинает работать.
Настройка плагина в админке
Все параметры находятся в Расширения → Forums Sitemap → Конфигурация.
Параметр
Тип
По умолчанию
Описание
cache_ttl
строка
3600
Время жизни кеша в секундах. По истечении карта перегенерируется.
perpage
строка
50000
Максимальное число URL в одном файле карты. При превышении создаются части (sitemap index).
freq
select
default
Частота изменения по умолчанию (если не задана для конкретного модуля).
prio
select
0.5
Приоритет по умолчанию.
forums
radio
1 (вкл.)
Включить разделы форума в карту сайта.
forums_freq
select
daily
Частота изменения страниц форума (разделов, тем, постов).
forums_prio
select
0.5
Приоритет страниц форума.
use_pretty_urls
radio
1 (вкл.)
Использовать красивые URL для карты (например, sitemap-forums.xml). Если отключено, ссылки будут вида index.php?r=sitemap_forums.
include_posts
radio
0 (выкл.)
Включать отдельные посты (сообщения) в карту сайта. Осторожно: на форумах с большим количеством сообщений это может значительно увеличить размер карты и время генерации.
Рекомендуется оставить значения по умолчанию, если нет специфических требований.
Настройка красивых URL (ЧПУ)
Чтобы ваша карта была доступна по адресам: https://вашсайт/sitemap-forums.xml – основная карта https://вашсайт/sitemap-forums-index.xml – индекс (при большом количестве URL)
необходимо, чтобы на сайте был активен плагин URLEditor с любым пресетом, отличным от none.
При установке плагин сам добавляет следующие правила в .htaccess (если их ещё нет):
Вручную эти правила прописывать не нужно — установка сделает всё автоматически. Если вы отключали автоматическое изменение .htaccess, просто скопируйте строки выше в свой .htaccess после строки RewriteEngine On.
Использование
Просмотр карты
Основная карта: откройте в браузере https://вашсайт/sitemap-forums.xml или https://вашсайт/index.php?r=sitemap_forums
Индекс (если карта разбита на части):https://вашсайт/sitemap-forums-index.xml или https://вашсайт/index.php?r=sitemap_forums&a=index
Добавление в robots.txt
При установке плагин автоматически добавляет в корневой robots.txt следующие строки (в зависимости от настроек ЧПУ):
Если вам нужно изменить или удалить эти ссылки — отредактируйте robots.txt вручную.
Проверка валидности
Вы можете использовать XML Sitemap Validator или аналогичные сервисы, чтобы убедиться, что карта сформирована правильно.
Кеширование и его очистка
Готовые карты сохраняются в папке datas/cache/sitemap_forums/ и обновляются только по истечении времени cache_ttl (по умолчанию 1 час). Это значительно снижает нагрузку на сервер при частых запросах от поисковых систем.
Если вам нужно принудительно обновить карты раньше срока — просто удалите файлы в папке кэша (datas/cache/sitemap_forums/). При следующем обращении они создадутся заново.
Подробное описание каждого файла
Ниже приведено очень подробное описание каждого файла, входящего в плагин. Описание ведётся от общего назначения к конкретным деталям, чтобы новичок смог разобраться.
1. sitemap_forums.setup.php
Назначение: Это «паспорт» плагина. Здесь хранится информация, которую Cotonti использует для регистрации плагина в системе и для построения страницы настроек в админ-панели. Сам файл не выполняет никаких действий, кроме объявления метаданных.
Что содержит:
Секция [BEGIN_COT_EXT] и [END_COT_EXT] – метаданные плагина: его код (sitemap_forums), название, категорию (seo), описание, версию, автора, требуемые модули (forums), права доступа гостей и пользователей.
Секция [BEGIN_COT_EXT_CONFIG] и [END_COT_EXT_CONFIG] – список настроек. Формат строки: имя_параметра=порядок:тип:значение_по_умолчанию:подсказка. Типы: string, select, radio, separator.
Важно: изменение этого файла вручную не рекомендуется — все настройки можно менять через админку, и они сохранятся в базе данных.
2. sitemap_forums.ajax.php
Назначение: Сердце плагина. Этот файл вызывается напрямую через AJAX-хук Cotonti, когда кто-то открывает ссылку вида index.php?r=sitemap_forums (или её «красивый» аналог sitemap-forums.xml). Именно он формирует и отдаёт готовую XML-карту форума.
Получение параметров:$d (номер части) и $a (действие, 'index' для индексного файла).
Чтение настроек плагина из Cot::$cfg['plugin']['sitemap_forums'].
Определение путей к кешу: папка datas/cache/sitemap_forums/ создаётся при необходимости.
Генерация индексного файла (при ?a=index): проверка кеша, пересчёт количества URL, формирование ссылок на части, сохранение в кеш и вывод.
Генерация основной карты (обычный запрос): проверка актуальности кеша, при необходимости полная перестройка:
Подключение модуля forums.
Сбор статистики разделов из cot_forum_stats.
Добавление страниц списка тем (с пагинацией).
Добавление страниц постов внутри каждой темы (с пагинацией).
Если включено include_posts, выборка всех постов из cot_forum_posts и добавление отдельных URL.
Каждая запись обрабатывается функцией sitemap_forums_parse().
Отдача готового файла: выбор нужного файла кеша, очистка от BOM, вывод с корректным XML-заголовком.
Ключевые моменты: скрипт работает только внутри Cotonti (константа COT_CODE). Кеширование реализовано в sitemap_forums_parse() и sitemap_forums_save(). Для исключения/добавления сущностей следует править этот файл.
3. inc/sitemap_forums.functions.php
Назначение: Библиотека вспомогательных функций. Все функции статические.
sitemap_forums_compress($xml) — удаляет лишние пробелы, табуляции и переносы строк из XML.
sitemap_forums_date($timestamp) — возвращает дату в формате W3C (ISO 8601) или пустую строку, если метка 0.
sitemap_forums_freq($value) — возвращает значение changefreq или пусто, если 'default'.
sitemap_forums_prio($value) — аналогично для priority (пусто для 0.5).
sitemap_forums_parse($t, &$items, $item) — добавляет запись в шаблон, при превышении perpage сохраняет текущую часть и начинает новую.
sitemap_forums_save($xml, $d) — сохраняет XML в файл кеша (sitemap.xml или sitemap.1.xml и т.д.).
4. Языковые файлы (lang/sitemap_forums.ru.lang.php и en.lang.php)
Хранят переведённые строки для админки. Массив $L содержит подписи к параметрам, заголовки и значения для выпадающих списков.
5. Шаблоны (tpl/sitemap_forums.tpl и sitemap_forums.index.tpl)
Основной шаблон — <urlset> с блоком SITEMAP_ROW. Условные блоки скрывают пустые <lastmod>, <changefreq>, <priority>. Индексный шаблон — <sitemapindex> с аналогичной структурой. Важно: не добавлять <?xml version="1.0"?> в шаблоны — он вставляется программно.
6. setup/sitemap_forums.install.php
Назначение: Выполняется при установке плагина. Автоматически:
Добавляет ссылки на карту в robots.txt (удаляя старые записи с sitemap-forums/sitemap_forums).
Вставляет правила rewrite в .htaccess (если URLEditor активен и правил ещё нет).
Пример использования
Установите плагин.
Проверьте, что в robots.txt появились строки Sitemap:.
Откройте https://вашсайт/sitemap-forums.xml — вы увидите XML со списком разделов и тем форума.
При необходимости включите include_posts в настройках, чтобы добавить отдельные посты.
Для проверки валидатором убедитесь, что в белом списке ботов visitor_stats (если используется) есть 'Sitemaps Generator'.
Устранение неполадок
Карта не открывается (404/500): проверьте активность модуля forums и права на запись в datas/cache/sitemap_forums/.
Красивые URL не работают: убедитесь, что URLEditor активен и пресет не none. Проверьте наличие правил в .htaccess.
Нет постов: проверьте опцию include_posts. Если включена, но постов нет — очистите кеш.
Валидатор: content-type: text/html: добавьте 'Sitemaps Generator' в белый список ботов visitor_stats.
Индексный файл пуст или с ошибками: очистите кеш, проверьте perpage и use_pretty_urls.
Лицензия
Распространяется под лицензией BSD. Свободное использование и модификация при сохранении копирайта.
Оказываю весь спектр услуг по CMF Cotonti. Разработка открытых и закрытых корпоративных интернет порталов, небольших социальных сетей, торговые площадки, маркетплейсы, биржи фриланса, каталоги товаров оптовых поставщиков, интернет-магазин под заказ, чтобы делать совместные покупки и групповые совместные продажи от имени нескольких продавцов.
CMS, Скрипт и Движок - веб сайта онлайн-витрины, интернет магазина инфопродуктов и цифровых товаров. Разные цены в разных валютах на товар. Онлайн-оплата в криптовалюте за товары и услуги.