Перейти к содержанию

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

Приветствую,

имею проблему с генерацией файла сайтмап.

Скрин http://joxi.ru/V2Vpl5kc3Jbjrv

Суть проблемы заключается в том что в sitemap появляется лишний пробел.

Восстанавливал исходные файлы, не помогло. Пытался найти в интернете какое-то решение - увы, все не то.

Пытался даже ставить другие модификации сайтмапа,(Google Sitemap Fast и [_FAST_] Sitemap) та же проблема.

https://flame.az/index.php?route=feed/google_sitemap

 

Буду рад если подскажите в каком направлении искать.

Сам файл sitemap

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

			$output .= '<url>';
		$output .= '<loc>' . HTTP_SERVER . '</loc>';
		$output .= '<changefreq>daily</changefreq>';
		$output .= '<priority>1.0</priority>';
		$output .= '</url>';

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

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

			foreach ($products as $product) {
				$output .= '<url>';
				$output .= '<loc>' . str_replace('&', '&amp;', str_replace('&amp;', '&', $this->url->link('product/product', 'product_id=' . $product['product_id']))) . '</loc>';
				$output .= '<lastmod>' . substr(max($product['date_added'], $product['date_modified']), 0, 10) . '</lastmod>';
				$output .= '<changefreq>weekly</changefreq>';
				$output .= '<priority>0.9</priority>';
				$output .= '</url>';
			}

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

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

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

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

			

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

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

			

			$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>' . str_replace('&', '&amp;', str_replace('&amp;', '&', $this->url->link('product/category', 'path=' . $new_path))) . '</loc>';
			$output .= '<lastmod>' . substr(max($result['date_added'], $result['date_modified']), 0, 10) . '</lastmod>';
			$output .= '<changefreq>weekly</changefreq>';
			$output .= '<priority>0.8</priority>';
			$output .= '</url>';

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

		return $output;
	}
}
?>

 

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

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


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

Если используете стандартный, то все равно придете к поиску

 

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


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

Google Sitemap, здесь не причем. У Вас на всех страницах сайта первая строка страницы пустая, а затем строка 

<?xml version="1.0" encoding="UTF-8"?>

Посмотрите исходный код любой страницы сайта. В файле header.tpl такого ничего нет?

flameaz.png

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


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

Случайно нашел такую же ошибку. Все страницы генерятся со 2-й строки! В index.tpl и index.php никаких изменений нет. Как такое возможно?

 

2017-05-25_111541.jpg

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


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

Проверил все файлы на BOM, все чисто, vqmod отключал с чисткой кэша.... не влияет.  какие еще могут быть решения?

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


Ссылка на сообщение
Поделиться на другие сайты
4 часа назад, AlfredS сказал:

В index.tpl

А где вы такой файл нашли? Если у вас не какой-нибудь экзотический шаблон, такого файла быть не должно.

Смотрите header.tpl и смотрите не на пустую первую строку, а просто на первую строку: если там не доктайп, а какой-то php код, после него при рендере может оставаться пустая строка.

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


Ссылка на сообщение
Поделиться на другие сайты
18 часов назад, Dotrox сказал:

А где вы такой файл нашли? Если у вас не какой-нибудь экзотический шаблон, такого файла быть не должно.

Смотрите header.tpl и смотрите не на пустую первую строку, а просто на первую строку: если там не доктайп, а какой-то php код, после него при рендере может оставаться пустая строка.

header.tpl и header.php конечно, извиняюсь. Но причина не в них, там все стандартно, и даже без header.tpl код начинается со второй строки и при смене шаблона тоже. На всех страницах и в админке... Ткните пожалуйста в документацию, попробую заменить все файлы влияющие на вывод шаблона.

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


Ссылка на сообщение
Поделиться на другие сайты
4 часа назад, AlfredS сказал:

причина не в них, там все стандартно

А вы смотрели оригинальные или из кеша модификатров?

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


Ссылка на сообщение
Поделиться на другие сайты
17 часов назад, Dotrox сказал:

А вы смотрели оригинальные или из кеша модификатров?

И оригинальный и этот тоже смотрел:  vq2-catalog_view_theme_default_template_common_header.tpl  Он формируется нормально, с первой строки доктайп. При стирании всего кода в header.tpl, footer.tpl и home.tpl такая картина:

2017-05-27_092909.jpg

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


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

есть еще вариант что  в каком то файле, типа config или подобное , если в конце есть закрывающий php тег может стоять перевод строки.

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


Ссылка на сообщение
Поделиться на другие сайты
On 16.05.2017 at 7:20 AM, agefremov said:

Google Sitemap, здесь не причем. У Вас на всех страницах сайта первая строка страницы пустая, а затем строка 


<?xml version="1.0" encoding="UTF-8"?>

Посмотрите исходный код любой страницы сайта. В файле header.tpl такого ничего нет?

flameaz.png

 

Спасибо, только что заметил. Но с чего там пустой строке появиться не пойму.

Единственное что недавно было предпринято это переход на httpS

Шапка имеет вид

<?php if (isset($_SERVER['HTTP_USER_AGENT']) && !strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6')) echo '<?xml version="1.0" encoding="UTF-8"?>'. "\n"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="https://www.w3.org/1999/xhtml" dir="<?php echo $direction; ?>" lang="<?php echo $lang; ?>" xml:lang="<?php echo $lang; ?>">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo $title; ?></title>
<base href="<?php echo $base; ?>" />
<?php if ($description) { ?>
<meta name="description" content="<?php echo $description; ?>" />
<?php } ?>
<?php if ($keywords) { ?>
<meta name="keywords" content="<?php echo $keywords; ?>" />

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


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

Благодарю.

Решение оказалось как и говорили в 1 пробеле.

В файле index.php в самом верху был пробел.

Он и сайт изговнял и сайтмап.

Спасибо, все исправил.

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


Ссылка на сообщение
Поделиться на другие сайты
В 27.05.2017 в 15:23, olaff сказал:

есть еще вариант что  в каком то файле, типа config или подобное , если в конце есть закрывающий php тег может стоять перевод строки.

Ни пробелов, ни переводов строки нет, проверил index.php, header.php, footer.php, function.php, config.php, Какие еще файлы могут повлиять? На данный момент файлы шаблона и vqmod не причастны к проблеме вывода кода на всех страницах со второй строки.

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


Ссылка на сообщение
Поделиться на другие сайты
16 часов назад, greataz сказал:

<?php if (isset($_SERVER['HTTP_USER_AGENT']) && !strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6')) echo '<?xml version="1.0" encoding="UTF-8"?>'. "\n"; ?>

Вот это вообще лишнее. Как и весь хлам в доктайпе.

 

 

11 часов назад, AlfredS сказал:

На данный момент файлы шаблона и vqmod не причастны к проблеме

Покажите первые 10 строк кода из header.tpl, который в кеше.

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


Ссылка на сообщение
Поделиться на другие сайты
<!DOCTYPE html>
<html dir="<?php echo $direction; ?>" lang="<?php echo $lang; ?>">
<head>
<meta charset="UTF-8" />
<title><?php echo $title; ?></title>
<base href="<?php echo $base; ?>" />
<?php if ($description) { ?>
<meta name="description" content="<?php echo $description; ?>" />
<?php } ?>
<?php if ($keywords) { ?>

Это из vq2-catalog_view_theme_default_template_common_header.tp Начинаются с 1-й строки

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


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

Добрый день!

Аналогичная проблема, весь сайт начинается с 2 пустых строк, соответственно и sitemap некорректно отображается.

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


Ссылка на сообщение
Поделиться на другие сайты
9 minutes ago, Evgene said:

Добрый день!

Аналогичная проблема, весь сайт начинается с 2 пустых строк, соответственно и sitemap некорректно отображается.

 

Многое пересмотрел в интернете, помогло удаление 2х пустых строчек в конце файла config.php

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


Ссылка на сообщение
Поделиться на другие сайты
В 07.06.2017 в 15:39, Evgene сказал:

 

Многое пересмотрел в интернете, помогло удаление 2х пустых строчек в конце файла config.php

 

Вам повезло)) в моем пустых строк нет. Сейчас попробовал добалять в config.php переводы строки и действительно все страницы стали грузиться с уже с 3-ей, 4-ей строки... Видимо, действительно где-то пустая строка, в каком-то php файле, попробую отыскать.

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

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


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

Отыскал в session.php два перевода строки в конце. Просто открывал все файлы по очереди и просматривал. Видимо редактировал его на сервере и при сохранении они дописались. А сколько нервов потратил из-за такой мелочи! Теперь Sitemap генерится как надо, всем спасибо!

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.