Данное решение позволяет исключить постоянное обращение поисковых роботов к встроенному в Opencart генератору sitemap, который пересоздаёт карту сайта каждый раз при каждом новом обращении к скрипту (генерирует карту сайта «на лету»), что тем самым очень сильно нагружает web-сервер, на котором стоит сайт, а также позволит генерировать вам две разные карты сайта для Google и Yandex соответственно.
Как добавить файл sitemap Opencart 2 и Opencart 3? Подключись через FTP-клиент к корневой директории твоего сайта и создай в ней файл с расширением *.php и названием sitemapgen, после этого выставь права 0755 на этот файл и открой его в любом удобном для тебятекстовом редакторе (для Windows я рекомендую использовать Notepad++, а для OS X — TextWrangler или Coda).
Для записи Google Sitemap и Yandex Sitemap в файл под Opencart 2.x
<?php // Для Opencart 2.x //Подгружаем конфиг require_once('config.php'); //Назначаем переменные //Внимание: HTTPS_SERVER - если вы используете https:// и HTTP_SERVER если https:// $siteMapSource = HTTP_SERVER . 'index.php?route=feed/google_sitemap'; $xml = file_get_contents($siteMapSource); $siteMapContent = simplexml_load_string($xml); $siteMapSource2 = HTTP_SERVER . 'index.php?route=feed/yandex_sitemap'; $xml2 = file_get_contents($siteMapSource2); $siteMapContent2 = simplexml_load_string($xml2); //Записываем данные из БД в статические файлы *.xml if (!file_put_contents('1_g_sitemap.xml', $siteMapContent->asXML())) { error_log(date('Y-m-d H:i:s - ', time()) . 'Unable to save Google content into the file' ."\n", 3, DIR_LOGS . 'sitemap.txt'); die('Google Sitemap data export process has been failed!'); } elseif (!file_put_contents('1_ya_sitemap.xml', $siteMapContent2->asXML())) { error_log(date('Y-m-d H:i:s - ', time()) . 'Unable to save Yandex content into the file' ."\n", 3, DIR_LOGS . 'sitemap.txt'); die('Yandex Sitemap data export process has been failed!'); } else { echo 'G,YA sitemaps update has been successfully completed!'; } ?>
Для записи Google Sitemap и Yandex Sitemap в файл под Opencart 3.x
<?php // Для Opencart 3.x //Подгружаем конфиг require_once('config.php'); //Назначаем переменные //Внимание: HTTPS_SERVER - если вы используете https:// и HTTP_SERVER если https:// $siteMapSource = HTTP_SERVER . 'index.php?route=extension/feed/google_sitemap'; $xml = file_get_contents($siteMapSource); $siteMapContent = simplexml_load_string($xml); $siteMapSource2 = HTTP_SERVER . 'index.php?route=extension/feed/yandex_sitemap'; $xml2 = file_get_contents($siteMapSource2); $siteMapContent2 = simplexml_load_string($xml2); //Записываем данные из БД в статические файлы *.xml if (!file_put_contents('1_g_sitemap.xml', $siteMapContent->asXML())) { error_log(date('Y-m-d H:i:s - ', time()) . 'Unable to save Google content into the file' ."\n", 3, DIR_LOGS . 'sitemap.txt'); die('Google Sitemap data export process has been failed!'); } elseif (!file_put_contents('1_ya_sitemap.xml', $siteMapContent2->asXML())) { error_log(date('Y-m-d H:i:s - ', time()) . 'Unable to save Yandex content into the file' ."\n", 3, DIR_LOGS . 'sitemap.txt'); die('Yandex Sitemap data export process has been failed!'); } else { echo 'G,YA sitemaps update has been successfully completed!'; } ?>
Если у тебя установлен только стоковый модуль генерации карты сайта для Opencart — Google Sitemap, то тебе необходимо скопировать и вставить в созданный файл следующий кусок кода:
Для записи Google Sitemap в файл под Opencart 2.x
<?php // Для Opencart 2.x //Подгружаем конфиг require_once('config.php'); //Назначаем переменные //Внимание: HTTPS_SERVER - если вы используете https:// и HTTP_SERVER если https:// $siteMapSource = HTTPS_SERVER . 'index.php?route=feed/google_sitemap'; $xml = file_get_contents($siteMapSource); $siteMapContent = simplexml_load_string($xml); //Записываем данные из БД в статический файл *.xml if (!file_put_contents('sitemap.xml', $siteMapContent->asXML())) { error_log(date('Y-m-d H:i:s - ', time()) . 'Unable to save Google content into the file' ."\n", 3, DIR_LOGS . 'sitemap.txt'); die('Google Sitemap data export process has been failed!'); } else { echo 'Google Sitemap update has been successfully completed!'; } ?>
Для записи Google Sitemap в файл под Opencart 3.x
<?php // Для Opencart 3.x //Подгружаем конфиг require_once('config.php'); //Назначаем переменные //Внимание: HTTPS_SERVER - если вы используете https:// и HTTP_SERVER если https:// $siteMapSource = HTTPS_SERVER . 'index.php?route=extension/feed/google_sitemap'; $xml = file_get_contents($siteMapSource); $siteMapContent = simplexml_load_string($xml); //Записываем данные из БД в статический файл *.xml if (!file_put_contents('sitemap.xml', $siteMapContent->asXML())) { error_log(date('Y-m-d H:i:s - ', time()) . 'Unable to save Google content into the file' ."\n", 3, DIR_LOGS . 'sitemap.txt'); die('Google Sitemap data export process has been failed!'); } else { echo 'Google Sitemap update has been successfully completed!'; } ?>
Проверка работоспособности скрипта
После этого сохраняй изменения в файле и закрывай текстовый редактор. Теперь тебе нужно проверить получившийся скрипт на работоспособность.
Для этого тебе необходимо напрямую обратиться к данному файлу через браузер, если всё прошло без ошибок, то ты увидишь сообщение об успешной генерации статических файлов sitemap в своём браузере:
Для того, чтобы карта сайта обновлялась автоматически, тебе необходимо добавить задание в планировщик CRON на хостинге.