Карта сайта XML
XML-карта сайта для OpenCart 4: товары с картинками, категории, производители, информационные страницы, статьи и категории блога — по языкам, с индексом карт и строкой Sitemap в robots.txt.
Назначение и совместимость
В OpenCart 4.1.0.4 XML-карты сайта нет (штатных фидов нет совсем, есть только HTML-страница «Карта сайта» для посетителей). Без карты магазин сложно подать в Яндекс.Вебмастер и Google Search Console, а новые товары попадают в индекс медленнее. Модуль отдаёт карту по протоколу sitemaps.org прямо из базы магазина — файлы на диске не создаются.
Проверено на OpenCart 4.1.0.4 и PHP 8.2 со штатной темой. Другие версии OpenCart 4 не проверялись. Ядро не меняется: модуль — расширение типа «Каналы» со своим адресом на витрине.
/sitemap.xml.Установка
- Расширения → Установщик → «Загрузить», файл
sitemap_oc4.ocmod.zip(имя не менять: OpenCart 4 берёт из него код расширения). - В строке «Карта сайта XML» — зелёная кнопка «Установить».
- Расширения → Расширения, тип «Каналы» → «Установить» у «Карта сайта XML».
- Обновите страницу: появился раздел «Оптимизация» с пунктом «Карта сайта XML». Карта уже работает со значениями по умолчанию.
Права получает группа пользователя, который нажал «Установить». Другим группам — Система → Пользователи → Группы пользователей, маршрут extension/sitemap_oc4/feed/sitemap (в сборке OCM Store модуль уже установлен и виден в Расширения → Расширения → Каналы; группы «Администратор» и «Контент-менеджер» получают права на него и на страницу настроек extension/sitemap_oc4/sitemap/page при установке магазина).
Адрес карты и robots.txt
Адрес показан вверху страницы настроек: https://ваш-домен/index.php?route=extension/sitemap_oc4/feed/sitemap. Без параметров отдаётся индекс карт; каждая карта в нём — тот же адрес с параметрами type (тип записей), page (номер части) и language (код языка). Этот адрес и добавляют в кабинеты поисковых систем.
Чтобы роботы находили карту сами, в robots.txt нужна строка Sitemap: <адрес карты>. Кнопка «Записать в robots.txt» добавляет её в файл в корне магазина (существующая строка этой карты заменяется, остальные строки не трогаются; если файла нет, он создаётся). Рядом показано, есть ли строка в файле сейчас. Если файл недоступен для записи — добавьте строку вручную.
Настройки
Оптимизация → Карта сайта XML (или Расширения → Расширения → Каналы → Карта сайта XML → Редактировать).
| Настройка | По умолчанию | Смысл |
|---|---|---|
| Статус | включено | Выключенная карта отдаёт страницу «не найдено» |
| Товары, Категории, Производители, Информационные страницы, Статьи блога, Категории блога | включено | Какие типы записей входят в карту. Выключенный тип исчезает из индекса; вместе с производителями исчезает ссылка на список брендов, вместе со статьями — на блог |
| Картинки товаров | включено | Основное и дополнительные изображения товара в карте товаров (расширение image) |
| Языки | только язык магазина по умолчанию | Карты только для языка магазина по умолчанию или для каждого включённого языка |
| Адресов в одной карте | 5000 | От 1 до 50 000. Если адресов больше, набор делится на части |
| Кэш, минут | 60 | Готовые карты хранятся в кэше магазина; 0 — без кэша. Сохранение настроек и кнопка «Очистить кэш» сбрасывают кэш |
Что попадает в карту
- Страницы (
type=page): главная, список производителей (если включены производители), блог (если включены статьи). - Товары: включённые, с датой доступности не позже сегодня, привязанные к магазину и имеющие описание на языке карты;
lastmod— дата изменения товара; картинки — основное изображение и дополнительные по порядку. - Категории: включённые, с полным путём от корня (
path=20_27) — так же, как строит ссылки сама витрина. - Производители, информационные страницы (включённые), статьи (включённые, с
lastmod) и категории блога (включённые).
Адреса строятся штатным механизмом ссылок магазина: при включённых ЧПУ в карте будут ЧПУ-адреса, иначе — обычные с параметрами. Теги changefreq и priority не выводятся: современные поисковые системы их не учитывают.
Связь с модулем «SEO-поля»
Если установлен и включён модуль «SEO-поля» (в сборке OCM Store — всегда), карта учитывает его данные:
- записи с выключенной «Индексацией» (товары, категории, производители, страницы, статьи, категории блога) в карту не попадают;
- при включённой настройке «Канонический адрес с главной категорией» адрес товара в карте строится с путём главной категории — тот же адрес, что в теге
canonicalстраницы товара.
Без модуля «SEO-поля» карта работает как обычно.
Удаление
Расширения → Расширения → Каналы → «Удалить» у «Карта сайта XML», затем Расширения → Установщик → удалить пакет. Настройки и пункт меню удаляются, кэш карт очищается. Строку Sitemap из robots.txt удалите вручную.
Типовые вопросы
- В карте нет нового товара. Подождите истечения кэша или нажмите «Очистить кэш»; проверьте, что товар включён, привязан к магазину, его дата доступности не в будущем и индексация не выключена в «SEO-полях».
- Поисковая система сообщает об ошибке карты. Откройте адрес карты в браузере: он должен отдавать XML. Если открывается страница магазина или 404 — модуль выключен или не установлен компонент «Каналы».
- Адреса в карте без ЧПУ. Включите ЧПУ в настройках магазина и задайте ключевые слова записям — карта возьмёт их автоматически.
- Нужна карта по адресу /sitemap.xml. На Apache добавьте в
.htaccessперед общим правилом строкуRewriteRule ^sitemap\.xml$ index.php?route=extension/sitemap_oc4/feed/sitemap [L,QSA]; на Nginx —location = /sitemap.xml { rewrite ^ /index.php?route=extension/sitemap_oc4/feed/sitemap last; }. В сборке OCM Store правило для Apache уже есть в.htaccess.txt.