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

Проблема со штатным Sitemap - дубли страниц


Recommended Posts

Штатный Sitemap оказался диким придурком, и затроил мне все продукты в карте.

 

  • Первый раз: /superproduct1
  • Второй раз: /your/category/subcategory/superproduct1
  • Третий раз: /manufacturer/superproduct1

 

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

А если лишнее закрыть в robots, GoogleBot скажет: Предупреждение, страницы из sitemap закрыты для индексирования.

 

Приоритет у всех 3 страниц один и тот же.

 

В чем великолепие логики автора? Может я чего-то не понимаю?

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


Перепилил файл, чтобы уйти от затраивания ссылок. Теперь все в одном экземпляре  - путь через меню, чтобы был градусник.

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

			$this->load->model('catalog/product');
			$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>';
				/** В этом блоке переменная lastmod пустая **/
				$output .= '<priority>0.7</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 .= '<lastmod>' . date('Y-m-d\TH:i:sP', strtotime($product['date_modified'])) . '</lastmod>';
				$output .= '<priority>1.0</priority>';
				$output .= '</url>';
			}

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

		return $output;
	}
}
Змінено користувачем Mysha
Надіслати
Поділитися на інших сайтах


Штатный Sitemap оказался диким придурком, и затроил мне все продукты в карте.

 

Тоже с этим столкнулся. В итоге нашёл на форуме GOOGLE SITEMAP FAST в котором такой проблемы нет и sitemap генерится заметно быстрее.

 

Если нужно чтобы этот sitemap выводился по адресу site.ru/sitemap.xml вместо гугловского, нужно исправить строку в .htaccess

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

на

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

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


2.3 сам сразу отдает sitemap по дефолтному адресу. Я запилил родные модули, сделав отдельные версии для Гугл и Яндекс. Ждем пока они расчухают новье.

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


  • 5 months later...

Mysha, я так понял ты использовал модуль yandex sitemap? Я заменил содержимое файла yandex_sitemap.php твоим кодом выше, но пока все равно по 4-5 дубликатов в карте, правда lastmod стоит старый, как перегенерировать карту сайта можно? Спасибо.

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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