Добавляем <lastmod> в sitemap для Opencart 2.x

Или заставляем поисковых ботов проверять контент сайта чаще

Добавляем <lastmod> в sitemap для Opencart 2.x

Данный модуль добавляет в стоковый модуль генерации карты сайта для Opencart 2.x обязательную директиву < lastmod>< /lastmod>, значение которой даёт поисковым роботам понять, когда последний раз изменилась та или иная запись в карте сайта, что очень важно для хорошей индексации твоего сайта.

Значение между тегами < lastmod>< /lastmod> обновляется каждый раз при регенерации карты сайта и подставляет туда дату и время выполнения скрипта регенерации в нужном для поисковых роботов формате, например:

<lastmod>2017-07-20T23:34:44+00:00</lastmod>

Установка модуля

Модуль устанавливается как обычно, через стандартный установщик дополнений в админке — OCMOD и не заменяет никаких системных файлов и файлов шаблона. Скопируй код модуля в текстовый файл с названием lastmod.ocmod.xml и сохрани в любом месте, а затем загрузи его в установщик через админ-панель и после установки обнови кэш модификаторов (см. скриншоты выше).

Дополнение устанавливается на Opencart 2.0, Opencart 2.1, Opencart 2.2 и Opencart 2.3, а также на модифицированные движки ocStore 2.x.

Скачать архив с готовым файлом

<?xml version="1.0" encoding="UTF-8"?>
<modification>
<name>1Z realtime lastmod в Google и Yandex sitemaps [xml]</name>
<code>1Z realtime lastmod в Google и Yandex sitemaps [xml]</code>
<version>1.0</version>
<author>mrcivic</author>
<link>https://opencartforum.com/user/716269-mrcivic/</link>

<file path="catalog/controller/feed/google_sitemap.php">
	<operation error="skip">
	<search><![CDATA[$output .= '</url>';]]></search>
	<add position="before">
	<![CDATA[			$output .= '<lastmod>' . date('c',time()) . '</lastmod>';]]></add>
	</operation>
</file>

<file path="catalog/controller/feed/yandex_sitemap.php">
	<operation error="skip">
	<search><![CDATA[$output .= '</url>';]]></search>
	<add position="before">
	<![CDATA[			$output .= '<lastmod>' . date('c',time()) . '</lastmod>';]]></add>
	</operation>
</file>
</modification>
Плюсануть
Поделиться
Отправить
Запинить
Понравился этот пост? Поделись им в соцсети!
Популярное
11 комментариев
Alex
Alex

7 декабря 2017, 15:14

Добавил модуль. В ранее переделанных 1_ya_sitemap.xml и 1_g_sitemap.xml не появился lastmod. Зато он появился по прямому адресу site.ru/sitemap.xml.
Если Яндекс и Гугл получают статические файлы которые мы переделывали, как в них добавить lastmod?

Александр Окатьев

Очень странно, ведь скрипт, который записывает карту сайта по файлам 1_ya_sitemap.xml и 1_g_sitemap.xml берёт данные из

http://site.ru/index.php?route=feed/yandex_sitemap

и

http://site.ru/index.php?route=feed/google_sitemap

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

Какая версия и сборка Opencart у Вас? Вы очищали кэш модификаторов после установки модуля и не вносили изменения в код файлов сайта напрямую?

Alex
Alex

7 декабря 2017, 15:43

Чистый opencart 2.1.0.2. Код не изменял. Как есть скачал и установил. Кэш почистил.

Alex
Alex

7 декабря 2017, 15:45

Может быть из за того что в CRON я настроил обновление этих файлов 1 раз в день в 03:30 ночи?

Александр Окатьев

Подставьте адрес своего сайта вместо site.ru и проверьте правильность выполнения скриптов и наличие в них тега lastmod:

http://site.ru/index.php?route=feed/yandex_sitemap

и

http://site.ru/index.php?route=feed/google_sitemap
Alex
Alex

7 декабря 2017, 16:34

Подставил-в открываемых файлах есть lastmod.

Александр Окатьев

Значит есть ошибка в работе скрипта, который получает эти данные и записывает их в файлы. Напишите в комментарии к этой статье https://okatiev.ru/all/zapis-sitemap-xml-v-fayl-dlya-opencart-2-x/ содержимое файла, который генерирует файлы 1_ya_sitemap.xml и 1_g_sitemap.xml

Алекс
Алекс

8 декабря 2017, 10:24

Данные появились с утра. Возможно действительно файлы обновились по расписанию настроенному в CRON в 03-30 ночи. Сейчас по обоим адресам: 1_ya_sitemap.xml и 1_g_sitemap.xml есть lastmod.

Александр Окатьев

Супер, значит всё работает! Но для того, чтобы не ждать, Вы можете проверить работу скрипта, напрямую обратившись к адресу файла /sitemap_ABC.php, где «sitemap_ABC» название вашего файла к которому обращается CRON-планировщик. И удалите файл sitemap.xml из корневой директории сайта, в ней не должно быть никаких карт сайта кроме 1_ya_sitemap.xml и 1_g_sitemap.xml.

Алекс
Алекс

8 декабря 2017, 10:40

Файла sitemap.xml в корневой деректории нет.

Александр Окатьев

Значит всё в полном порядке! :)

Алекс
Алекс

8 декабря 2017, 10:46

Но по адресу: https// мой сайт/sitemap.xml выводит карту сайта..

Александр Окатьев

Вы обращаетесь к файлу sitemap.xml, а Вам нужно обратиться к файлу sitemap_xxx.php, к которому обращается CRON-планировщик.

Алекс
Алекс

8 декабря 2017, 11:06

По обоим адресам: sitemap_xxx.php и sitemap.xml выводит карту сайта. Хотя файла sitemap.xml в корневой директории нет.

Александр Окатьев

Посмотрите ещё раз вот эту статью: https://okatiev.ru/all/zapis-sitemap-xml-v-fayl-dlya-opencart-2-x/, Вы поймёте о чем я говорю.


UPD: Для того, чтобы убрать возможность обращаться по адресу /sitemap.xml, Вам необходимо закомментировать строку (в начале строки поставить символ #)

RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]

в файле .htaccess, который находится в корневой директории Вашего сайта. В итоге строка должна выглядеть следующим образом:

# RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
Alex
Alex

9 декабря 2017, 01:30

Строку закомментировал #, но всё равно по адресу мой сайт/sitemap.xml открывается карта сайта, такая же как для Гугла.

Александр Окатьев

Попробуйте полностью удалить строку из файла .htaccess, сохраните файл и очистите кэш браузера (CTRL + R) и попробуйте снова обратиться к вашсайт.ру/sitemap.xml. Также еще раз проверьте наличие статического файла sitemap.xml в корневой директории Вашего сайта, если он там есть, то удалите его.

Alex
Alex

11 декабря 2017, 13:41

Полностью удалил строку из .htaccess. Очистил кэш. Но всё равно по адресу сайт/ sitemap.xml выводит карту сайта. В корневой папке нет sitemap.xml файла.

Александр Окатьев

Сделайте поиск по файлу .htaccess на предмет наличия слова sitemap, возможно строка задублирована.

Алекс
Алекс

11 декабря 2017, 14:14

Нет строки sitemap в файле .htaccess. Файл отправил вам на почту.

Ваш комментарий
адрес не будет опубликован
HTML-код не интерпретируется

Ctrl + Enter