Opencart 3 генерация sitemap.xml для большого количества товара

Так получилось, что sitemap.xml у OpenCart это слабое место. Его расширение по умолчанию, при каждом запросе генерирует эту карту сайта дергая базу данных, при том что xml это просто статика, для которой дергать php и не нужно, ну а если у вас тысячи товаров, как на моем демо магазине (>2500), то карта сайта даже никогда не отработает.

Я сильно не стал выдумывать решение, все достаточно просто, нужно просто карту сайта сгенерировать в корень и чтобы nginx её отдавал как обычный статический файл. Для этого я скопировал старое расширение с новым именем и добавил просто вывод в файл в корень сайта.

Так же обратите внимание на строки

Изначально они не экранируются, карта сайта собирается строкой а не объектом, и если в названии есть амперсанды, то ваша карта сайта станет сразу невалидной.

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

PS. Не забываем с .htaccess убрать строку, которая по адресу /sitemap.xml запускает выполнение контроллера.

Opencart 3 генерация sitemap.xml для большого количества товара: 5 комментариев

  1. Здравствуйте! Я совсем новичок в opencart
    Подскажите пожалуйста
    «»»»»Дальше я добавил консольный скриптик и поставил его на крон, для запуска контроллера и генерации карты сайта раз в сутки, чего вполне на мой взгляд достаточно.

    PS. Не забываем с .htaccess убрать строку, которая по адресу /sitemap.xml запускает выполнение контроллера.»»»»

    как добавить консольный скрипт и как его поставит на крон?
    Спасибо!

    1. В опенкарт простого механизма запуска с консоли нет к сожалению, по этому генерацию надо по умолчанию запустить как то по другому, например вызова с браузера данного контроллера.
      Могу расписать как работать с консолью в следующей статье

  2. Подскажите решение сохранения к примеру такой комбинации
    Сайт мультиязычный:
    https://site.com/index.php?route=extension/feed/google_sitemap — сохраняет в корень — sitemap.xml это есть..
    а как добавить
    https://site.com/ru/index.php?route=extension/feed/google_sitemap — сохраняем — sitemap_ru.xml
    https://site.com/en/index.php?route=extension/feed/google_sitemap — сохраняем — sitemap_en.xml
    Как добиться понимания языка…

    1. Он же сохраняет все товары и категории не зависимо от языка. А так дописать что то свое, которое будет генерировать разные файлы с какой то логикой попадания туда линков. Все зависит от того, что вы пытаетесь решить, пока мне кажется что вы делаете что то не то.

  3. Поделитсесь пожалуйста с этим
    «консольный скриптик и поставил его на крон, для запуска контроллера и генерации карты сайта раз в сутки, чего вполне на мой взгляд достаточно.»

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *