Sitemap Forums — XML-карта сайта для модуля Forums

Плагин для Cotonti Генерирует XML-карту сайта (sitemap) только для форума (разделы, темы и, опционально, отдельные посты). Помогает поисковым системам быстрее находить и индексировать все страницы форума.

Опубликовано в: Модули и Плагины для Cotonti

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 при установке

Установка

  1. Скачайте ZIP-архив плагина из репозитория GitHub.
  2. Распакуйте архив в папку plugins/ вашего сайта. Должна получиться структура, описанная выше.
  3. Зайдите в админ-панель Cotonti → Расширения.
  4. Найдите в списке плагин «Forums Sitemap» и нажмите «Установить».

Важно:
При установке плагин автоматически:

  • Добавит ссылки на карту форума в robots.txt.
  • Добавит правила rewrite в .htaccess для красивых URL (только если активен URLEditor и если этих правил ещё нет).

После установки плагин сразу начинает работать.

Настройка плагина в админке

Все параметры находятся в Расширения → Forums Sitemap → Конфигурация.

ПараметрТипПо умолчаниюОписание
cache_ttlстрока3600Время жизни кеша в секундах. По истечении карта перегенерируется.
perpageстрока50000Максимальное число URL в одном файле карты. При превышении создаются части (sitemap index).
freqselectdefaultЧастота изменения по умолчанию (если не задана для конкретного модуля).
prioselect0.5Приоритет по умолчанию.
forumsradio1 (вкл.)Включить разделы форума в карту сайта.
forums_freqselectdailyЧастота изменения страниц форума (разделов, тем, постов).
forums_prioselect0.5Приоритет страниц форума.
use_pretty_urlsradio1 (вкл.)Использовать красивые URL для карты (например, sitemap-forums.xml). Если отключено, ссылки будут вида index.php?r=sitemap_forums.
include_postsradio0 (выкл.)Включать отдельные посты (сообщения) в карту сайта. Осторожно: на форумах с большим количеством сообщений это может значительно увеличить размер карты и время генерации.

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

Настройка красивых URL (ЧПУ)

Чтобы ваша карта была доступна по адресам:
https://вашсайт/sitemap-forums.xml – основная карта
https://вашсайт/sitemap-forums-index.xml – индекс (при большом количестве URL)

необходимо, чтобы на сайте был активен плагин URLEditor с любым пресетом, отличным от none.

При установке плагин сам добавляет следующие правила в .htaccess (если их ещё нет):

RewriteRule ^sitemap-forums\.xml$ index.php?r=sitemap_forums [L]
RewriteRule ^sitemap-forums-index\.xml$ index.php?r=sitemap_forums&a=index [L]

Вручную эти правила прописывать не нужно — установка сделает всё автоматически.
Если вы отключали автоматическое изменение .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 следующие строки (в зависимости от настроек ЧПУ):

Sitemap: https://вашсайт/index.php?r=sitemap_forums
Sitemap: https://вашсайт/index.php?r=sitemap_forums&a=index
Sitemap: https://вашсайт/sitemap-forums.xml
Sitemap: https://вашсайт/sitemap-forums-index.xml

Если вам нужно изменить или удалить эти ссылки — отредактируйте 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-карту форума.

Как он работает (по шагам):

  1. Защита вывода: очищает буферы, отключает ошибки, устанавливает заголовок Content-Type: application/xml; charset=utf-8.
  2. Получение параметров: $d (номер части) и $a (действие, 'index' для индексного файла).
  3. Чтение настроек плагина из Cot::$cfg['plugin']['sitemap_forums'].
  4. Определение путей к кешу: папка datas/cache/sitemap_forums/ создаётся при необходимости.
  5. Генерация индексного файла (при ?a=index): проверка кеша, пересчёт количества URL, формирование ссылок на части, сохранение в кеш и вывод.
  6. Генерация основной карты (обычный запрос): проверка актуальности кеша, при необходимости полная перестройка:
    • Подключение модуля forums.
    • Сбор статистики разделов из cot_forum_stats.
    • Добавление страниц списка тем (с пагинацией).
    • Добавление страниц постов внутри каждой темы (с пагинацией).
    • Если включено include_posts, выборка всех постов из cot_forum_posts и добавление отдельных URL.
    • Каждая запись обрабатывается функцией sitemap_forums_parse().
  7. Отдача готового файла: выбор нужного файла кеша, очистка от 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

Назначение: Выполняется при установке плагина. Автоматически:

  1. Добавляет ссылки на карту в robots.txt (удаляя старые записи с sitemap-forums/sitemap_forums).
  2. Вставляет правила rewrite в .htaccess (если URLEditor активен и правил ещё нет).

Пример использования

  1. Установите плагин.
  2. Проверьте, что в robots.txt появились строки Sitemap:.
  3. Откройте https://вашсайт/sitemap-forums.xml — вы увидите XML со списком разделов и тем форума.
  4. При необходимости включите include_posts в настройках, чтобы добавить отдельные посты.
  5. Для проверки валидатором убедитесь, что в белом списке ботов 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. Свободное использование и модификация при сохранении копирайта.



Рейтинг на основе отзывов:
Звезд получено: 0
Oтзывов всего: 0
Средняя оценка: 0
7 минут чтения
Владелец: Carbonate Sodium

Отзывы к товарам

Отзывов пока нет


Добавить в корзину

Товар без файла для загрузки

 

Категория расширения
SEO и оптимизация

Обсуждение страницы в Telegram

Автор контента

webitproff

Оффлайн

webitproff

Последняя авторизация: 05.08.2026 11:32

  • Чем могу помочь?

    Оказываю весь спектр услуг по CMF Cotonti. Разработка открытых и закрытых корпоративных интернет порталов, небольших социальных сетей, торговые площадки, маркетплейсы, биржи фриланса, каталоги товаров оптовых поставщиков, интернет-магазин под заказ, чтобы делать совместные покупки и групповые совместные продажи от имени нескольких продавцов.

  • Разработки на GitHub бесплатно
    • 05.08.2026 11:26
    • 05.08.2026 11:28
    • Язык:

    Витрина Market PRO

    CMS, Скрипт и Движок - веб сайта онлайн-витрины, интернет магазина инфопродуктов и цифровых товаров. Разные цены в разных валютах на товар. Онлайн-оплата в криптовалюте за товары и услуги.