Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Дубли и другие проблемы Sitemap.xml на Opencart3


Recommended Posts

Друзья всем привет.

Вот начинаю осваивать Opencart3, и настраиваю Sitemap.xml для Гугла.

Работаю на Версия ocStore 3.0.3.7, -   Использую два языка (основной РУ), -   HTTPS

На фото все видно, я же озвучу 3 причины, что меня смущают:

   1) 5 дублей каждой страницы ( 1 страница с раширением IMAGE, остальные без). Что это и как с этим бороться

   2) в строке "url => lok" выдается HTTP, при том что сайт работает на протоколе HTTPS, и даже если перейти по ссылке что в Sitemap.xml, она редиректит на HTTPS (зелёным подсветил)

     (кстати для картинки все правильно выводит HTTPS

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

 

Создается файл стандартным /catalog/controller/extension/feed/google_sitemap.php

 

<?php
class ControllerExtensionFeedGoogleSitemap extends Controller {
	public function index() {
		if ($this->config->get('feed_google_sitemap_status')) {
			$output  = '<?xml version="1.0" encoding="UTF-8"?>';
			$output .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">';

			$this->load->model('catalog/product');
			$this->load->model('tool/image');

			$products = $this->model_catalog_product->getProducts();

			foreach ($products as $product) {
				if ($product['image']) {
					$output .= '<url>';
					$output .= '  <loc>' . $this->url->link('product/product', 'product_id=' . $product['product_id']) . '</loc>';
					$output .= '  <changefreq>weekly</changefreq>';
					$output .= '  <lastmod>' . date('Y-m-d\TH:i:sP', strtotime($product['date_modified'])) . '</lastmod>';
					$output .= '  <priority>1.0</priority>';
					$output .= '  <image:image>';
					$output .= '  <image:loc>' . $this->model_tool_image->resize($product['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_popup_height')) . '</image:loc>';
					$output .= '  <image:caption>' . $product['name'] . '</image:caption>';
					$output .= '  <image:title>' . $product['name'] . '</image:title>';
					$output .= '  </image:image>';
					$output .= '</url>';
				}
			}

			$this->load->model('catalog/category');

			$output .= $this->getCategories(0);

			$this->load->model('catalog/manufacturer');

			$manufacturers = $this->model_catalog_manufacturer->getManufacturers();

			foreach ($manufacturers as $manufacturer) {
				$output .= '<url>';
				$output .= '  <loc>' . $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $manufacturer['manufacturer_id']) . '</loc>';
				$output .= '  <changefreq>weekly</changefreq>';
				$output .= '  <priority>0.7</priority>';
				$output .= '</url>';

				$products = $this->model_catalog_product->getProducts(array('filter_manufacturer_id' => $manufacturer['manufacturer_id']));

				foreach ($products as $product) {
					$output .= '<url>';
					$output .= '  <loc>' . $this->url->link('product/product', 'manufacturer_id=' . $manufacturer['manufacturer_id'] . '&product_id=' . $product['product_id']) . '</loc>';
					$output .= '  <changefreq>weekly</changefreq>';
					$output .= '  <priority>1.0</priority>';
					$output .= '</url>';
				}
			}

			$this->load->model('catalog/information');

			$informations = $this->model_catalog_information->getInformations();

			foreach ($informations as $information) {
				$output .= '<url>';
				$output .= '  <loc>' . $this->url->link('information/information', 'information_id=' . $information['information_id']) . '</loc>';
				$output .= '  <changefreq>weekly</changefreq>';
				$output .= '  <priority>0.5</priority>';
				$output .= '</url>';
			}

			$output .= '</urlset>';

			$this->response->addHeader('Content-Type: application/xml');
			$this->response->setOutput($output);
		}
	}

	protected function getCategories($parent_id, $current_path = '') {
		$output = '';

		$results = $this->model_catalog_category->getCategories($parent_id);

		foreach ($results as $result) {
			if (!$current_path) {
				$new_path = $result['category_id'];
			} else {
				$new_path = $current_path . '_' . $result['category_id'];
			}

			$output .= '<url>';
			$output .= '  <loc>' . $this->url->link('product/category', 'path=' . $new_path) . '</loc>';
			$output .= '  <changefreq>weekly</changefreq>';
			$output .= '  <priority>0.7</priority>';
			$output .= '</url>';

			$products = $this->model_catalog_product->getProducts(array('filter_category_id' => $result['category_id']));

			foreach ($products as $product) {
				$output .= '<url>';
				$output .= '  <loc>' . $this->url->link('product/product', 'path=' . $new_path . '&product_id=' . $product['product_id']) . '</loc>';
				$output .= '  <changefreq>weekly</changefreq>';
				$output .= '  <priority>1.0</priority>';
				$output .= '</url>';
			}

			$output .= $this->getCategories($result['category_id'], $new_path);
		}

		return $output;
	}
}

 

Буфер обмена01-sitemap2.jpg

Надіслати
Поділитися на інших сайтах


9 часов назад, Alexx18 сказал:

Друзья всем привет.

Вот начинаю осваивать Opencart3, и настраиваю Sitemap.xml для Гугла.

Работаю на Версия ocStore 3.0.3.7, -   Использую два языка (основной РУ), -   HTTPS

На фото все видно, я же озвучу 3 причины, что меня смущают

 

 

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

p.s. прячьте под спойлер свои простыни.

Змінено користувачем antiuser
Надіслати
Поділитися на інших сайтах


27 минут назад, Otvet сказал:

купить готовый уже

 

Спасибо за совет, но это же форум, а не место где советуют купить.......

Да и платные модули, ...... я уже купил, с 3х - 2 на свалку. 

Надіслати
Поділитися на інших сайтах


10 часов назад, Alexx18 сказал:

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

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

Больше вопросов вы не задавали, обсуждение "причины, что меня смущают" - это для курилки.

Надіслати
Поділитися на інших сайтах


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

Решение нашел вот тут 

 

Цитата

предлагаю немного другую модификацию, что бы при хттп и хттпс протоколе сайтмап отображал текущий протокол.

в файле system/library/url.php добавляем строку с проверкой протокола подключения и на разных протоколах подключения у нас адрес соответствующий текущему протоколу.


	public function link($route, $args = '', $secure = false) {
	if($_SERVER["HTTPS"]) $secure = true;

первая строка неизменна, вторую добавляем.

 

 

2) кроме того нашел, что в этом куске проблема дублей товаров -фото

 

 

Буфер обмена0155.jpg

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.