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

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

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

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

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

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

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

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

  1. Aslan

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

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

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

    1. aisamiery Автор записи

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

  2. RomB

    Подскажите решение сохранения к примеру такой комбинации
    Сайт мультиязычный:
    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. aisamiery Автор записи

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

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

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