Плагин для Cotonti. Генерирует XML-карту сайта (sitemap) только для профилей пользователей.
Помогает поисковым системам находить и индексировать публичные страницы пользователей.
Плагин для Cotonti. Генерирует XML-карту сайта (sitemap) только для профилей пользователей. Помогает поисковым системам находить и индексировать публичные страницы пользователей.
История создания и зачем это нужно
Этот плагин — часть проекта по разделению стандартного плагина SiteMap (входящего в комплект Cotonti) на несколько независимых плагинов.
Оригинальный SiteMap генерировал одну большую карту для всего сайта сразу: страницы, форум, пользователи, товары. При любых изменениях или ошибках в одном из разделов приходилось «чинить» весь плагин целиком, что часто приводило к поломкам всей карты.
Чтобы избежать этой проблемы, было решено разбить единый плагин на специализированные, каждый из которых отвечает только за свой тип контента:
sitemap_pages – XML-карта страниц (с мультиязычной поддержкой)
sitemap_forums – XML-карта форумов
sitemap_market – XML-карта товаров (модуль Market)
Каждый плагин полностью автономен, настраивается отдельно и не влияет на работу других. Такой подход упрощает поддержку и позволяет гибко управлять картами сайта.
sitemap_users создан на основе кода оригинального SiteMap, но полностью переработан специально для модуля users и адаптирован под PHP 8.x.
Возможности
Генерирует XML-карту, содержащую ссылки на профили всех пользователей, доступных для публичного просмотра (с учётом прав доступа).
Автоматически разбивает карту на несколько файлов (sitemap index), если общее число ссылок превышает заданный лимит (perpage).
При установке автоматически добавляет ссылки на карту в robots.txt.
При установке автоматически добавляет правила rewrite в .htaccess для красивых URL (если активен плагин URLEditor).
Кеширует готовые карты в файлы для быстрой отдачи.
Гибкие настройки: частота обновления, приоритет для профилей пользователей.
Полная совместимость с PHP 8.x.
Требования
Cotonti Siena (рекомендуется актуальная версия)
Модуль users — должен быть установлен и активен
Плагин urleditor — если планируете использовать красивые URL (sitemap-users.xml)
Права на запись в папку datas/cache/ (для кеширования карт)
Доступ к списку пользователей: для генерации карты плагин проверяет право cot_auth('users', 'a', 'R'). Убедитесь, что гости или поисковые боты имеют это право (по умолчанию в Cotonti гости не могут просматривать список пользователей). Рекомендуется включить это право в админке: Права → users → a (список пользователей) → Гости: чтение.
PHP 8.0 или выше
Структура плагина
sitemap_users/
├── sitemap_users.setup.php # Заголовок, метаданные и настройки плагина
├── sitemap_users.ajax.php # Главный обработчик запросов (AJAX)
├── inc/
│ └── sitemap_users.functions.php # Функции: сжатие XML, работа с датами, сохранение карт
├── lang/
│ ├── sitemap_users.ru.lang.php # Русские подписи к настройкам
│ └── sitemap_users.en.lang.php # Английские подписи к настройкам
├── tpl/
│ ├── sitemap_users.tpl # Шаблон для обычного urlset
│ └── sitemap_users.index.tpl # Шаблон для индексного файла (sitemapindex)
└── setup/
└── sitemap_users.install.php # Автоматическое добавление ссылок в robots.txt
# и правил в .htaccess при установке
Вручную эти правила прописывать не нужно — установка сделает всё автоматически. Если вы отключали автоматическое изменение .htaccess, просто скопируйте строки выше в свой .htaccess после строки RewriteEngine On.
Использование
Просмотр карты
Основная карта: откройте в браузере https://вашсайт/sitemap-users.xml или https://вашсайт/index.php?r=sitemap_users
Индекс (если карта разбита на части):https://вашсайт/sitemap-users-index.xml или https://вашсайт/index.php?r=sitemap_users&a=index
Добавление в robots.txt
При установке плагин автоматически добавляет в корневой robots.txt следующие строки (в зависимости от настроек ЧПУ):
Если вам нужно изменить или удалить эти ссылки — отредактируйте robots.txt вручную.
Проверка валидности
Вы можете использовать XML Sitemap Validator или аналогичные сервисы, чтобы убедиться, что карта сформирована правильно.
Кеширование и его очистка
Готовые карты сохраняются в папке datas/cache/sitemap_users/ и обновляются только по истечении времени cache_ttl (по умолчанию 1 час). Это значительно снижает нагрузку на сервер при частых запросах от поисковых систем.
Если вам нужно принудительно обновить карты раньше срока — просто удалите файлы в папке кэша (datas/cache/sitemap_users/). При следующем обращении они создадутся заново.
Подробное описание каждого файла
Ниже приведено очень подробное описание каждого файла, входящего в плагин. Описание ведётся от общего назначения к конкретным деталям, чтобы новичок смог разобраться.
1. sitemap_users.setup.php
Назначение: «паспорт» плагина. Здесь хранится информация, которую Cotonti использует для регистрации плагина в системе и для построения страницы настроек в админ-панели.
Что содержит:
Секция [BEGIN_COT_EXT] и [END_COT_EXT] – метаданные плагина: его код, название, категорию, описание, версию, автора, требуемые модули, права доступа.
Секция [BEGIN_COT_EXT_CONFIG] и [END_COT_EXT_CONFIG] – список настроек, доступных администратору. Формат: имя_параметра=порядок:тип:значение_по_умолчанию:подсказка. Примеры: cache_ttl, freq, users.
Важно: изменение этого файла вручную не рекомендуется — все настройки можно менять через админку, и они сохранятся в базе данных.
2. sitemap_users.ajax.php
Назначение: сердце плагина. Вызывается через AJAX-хук при открытии ссылки карты. Формирует и отдаёт готовую XML-карту.
Как он работает (по шагам):
Защита вывода: очищает буферы, устанавливает заголовок Content-Type: application/xml; charset=utf-8.
Получение параметров:$d (номер части) и $a (действие: 'index' для индекса).
Чтение настроек плагина.
Определение путей к кешу (папка datas/cache/sitemap_users/).
Генерация индексного файла (при ?a=index): проверяет кеш, пересчитывает части, формирует <sitemapindex>.
Генерация основной карты: при устаревшем кеше пересобирает данные: проверяет доступ к списку пользователей, выбирает пользователей, формирует URL, передаёт в шаблон, сохраняет части в кеш.
Отдача готового файла: определяет нужный файл кеша, читает, очищает и выводит с правильной XML-декларацией.
3. inc/sitemap_users.functions.php
Назначение: библиотека вспомогательных функций.
sitemap_users_compress — удаляет лишние пробельные символы из XML.
sitemap_users_date — форматирует Unix-метку в W3C (ISO 8601).
sitemap_users_freq — возвращает значение для <changefreq> (если не default).
sitemap_users_prio — аналогично для <priority>.
sitemap_users_parse — добавляет одну запись в шаблон, при достижении лимита сохраняет текущую часть.
sitemap_users_save — сохраняет XML в файл кеша.
4. Языковые файлы (lang/sitemap_users.ru.lang.php и en.lang.php)
Назначение: перевод строк, отображаемых в админ-панели при редактировании настроек плагина. Содержат массив $L и массивы для выпадающих списков.
5. Шаблоны (tpl/)
sitemap_users.tpl (обычная карта)
Содержит блок <!-- BEGIN: MAIN --> с корневым элементом <urlset> и блок <!-- BEGIN: SITEMAP_ROW --> для одного URL. Условные блоки {SITEMAP_ROW_DATE}, {SITEMAP_ROW_FREQ}, {SITEMAP_ROW_PRIO} позволяют опускать необязательные теги.
sitemap_users.index.tpl (индексный файл)
Аналогичен, но корневой элемент — <sitemapindex>, а внутри блока SITEMAP_ROW — <sitemap> с <loc> и опционально <lastmod>.
Важно: никогда не добавляйте в эти шаблоны строку <?xml version="1.0" encoding="UTF-8"?> — она вставляется программно.
6. setup/sitemap_users.install.php
Назначение: выполняется при установке плагина. Настраивает robots.txt (добавляет ссылки на карту) и .htaccess (добавляет правила rewrite для красивых URL), если они доступны для записи и правила ещё не существуют.
Включите в админке Cotonti для гостей право чтения списка пользователей (Права → users → a → Гости: чтение).
Проверьте, что в robots.txt появились строки Sitemap:.
Откройте https://вашсайт/sitemap-users.xml — вы увидите XML со списком профилей пользователей.
Для проверки карты онлайн-валидатором добавьте 'Sitemaps Generator' в белый список ботов плагина visitor_stats, если он установлен.
Устранение неполадок
Карта не открывается (ошибка 404 или 500). Проверьте, активен ли модуль users и доступна ли для записи папка datas/cache/sitemap_users/.
Карта пуста, хотя пользователи есть. Проверьте права доступа: для гостей должно быть включено чтение списка пользователей (Права → users → a → Гости: чтение).
Красивые URL (sitemap-users.xml) не работают. Убедитесь, что плагин urleditor активен, пресет не none, и правила в .htaccess добавлены.
Валидатор показывает ошибку «Incorrect http header content-type: text/html». Добавьте 'Sitemaps Generator' в белый список ботов visitor_stats (файл WhitelistBots.php).
Индексный файл пуст или содержит неправильные ссылки. Очистите кеш и проверьте настройки perpage и use_pretty_urls.
Лицензия
Распространяется под лицензией BSD. Свободное использование и модификация при сохранении копирайта.
Оказываю весь спектр услуг по CMF Cotonti. Разработка открытых и закрытых корпоративных интернет порталов, небольших социальных сетей, торговые площадки, маркетплейсы, биржи фриланса, каталоги товаров оптовых поставщиков, интернет-магазин под заказ, чтобы делать совместные покупки и групповые совместные продажи от имени нескольких продавцов.
CMS, Скрипт и Движок - веб сайта онлайн-витрины, интернет магазина инфопродуктов и цифровых товаров. Разные цены в разных валютах на товар. Онлайн-оплата в криптовалюте за товары и услуги.