Mysha

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

Рекомендуемые сообщения

Mysha    4

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

 

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

 

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

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

 

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

 

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

Изменено пользователем Mysha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Mysha    4

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

<?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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SiteMix    145

Штатный 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Mysha    4

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

Изменено пользователем Mysha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
oxojeck    1

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу