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

[Поддержка] Устранение дублей страниц товаров и категорий


Yesvik

Recommended Posts

Обращаюсь очередной раз к автору темы (много раз уже помог думаю этот вопрос будет несложный).

Вопрос заключается в следующем:

1. Адрес - Изображение считается как дубль страницы?

Адрес появляется (как один из вариантов) подустим: ВОЙТИ -> ВЫЙТИ -> ВПЕРЁД.

2. Подскажите пожалуйста где можно ковырнуть вот это:

<a onclick="location = '<?php echo str_replace('&', '&', $continue); ?>'" class="button">
и одним махом поменять на вот это
<a href="/" class="button">

3. А может есть ешё куда лучше вариант?

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


1. Да, это дубль.

2. Это не для ленивых...

3. Ленивые поступают так:

В файле system/library/response.php, метод output(), в самом начале метода добавляют строку

if (!defined('HTTP_CATALOG') $this->output = str_replace('index.php?route=common/home', '', $this->output);

В коде ошибка, читайте ниже!

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

1. Да, это дубль.

2. Это не для ленивых...

3. Ленивые поступают так:

В файле system/library/response.php, метод output(), в самом начале метода добавляют строку

if (!defined('HTTP_CATALOG') $this->output = str_replace('index.php?route=common/home', '', $this->output);

С первым - понятно, со вторым – не очень, с третьим - вообще глушняк (даже метод "ТЫКА" не помог) :) .

Тыкните пальцем, куда засунуть все эти письмена и закрыть наконец-таки не закрываемый вопрос.

Мой response.php выглядит следующим образом:

<?php
final class Response {
private $headers = array(); 
private $output;
private $level = 0;

public function addHeader($header) {
	$this->headers[] = $header;
}

public function redirect($url) {
	header('Location: ' . $url);
	exit;
}

public function setOutput($output, $level = 0) {
	$this->output = $output;
	$this->level = $level;
}

private function compress($data, $level = 0) {
	if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== FALSE)) {
		$encoding = 'gzip';
	} 

	if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'x-gzip') !== FALSE)) {
		$encoding = 'x-gzip';
	}

	if (!isset($encoding)) {
		return $data;
	}

	if (!extension_loaded('zlib') || ini_get('zlib.output_compression')) {
		return $data;
	}

	if (headers_sent()) {
		return $data;
	}

	if (connection_status()) { 
		return $data;
	}

	$this->addHeader('Content-Encoding: ' . $encoding);

	return gzencode($data, (int)$level);
}

public function output() {
	if ($this->level) {
		$ouput = $this->compress($this->output, $this->level);
	} else {
		$ouput = $this->output;
	}	

	if (!headers_sent()) {
		foreach ($this->headers as $header) {
			header($header, TRUE);
		}
	}

	echo $ouput;
}
}
?>

P.S. Метод не для ленивых, НЕ ПРОЩЕ? :)

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


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

Метод для ленивых требует добавления всего одной строки. Только эту строку надо учитывать при обновлении. При добавлении модулей ничего править не надо.

Вот response.php с добавленной строкой.

<?php
final class Response {
private $headers = array();
private $output;
private $level = 0;

public function addHeader($header) {
	$this->headers[] = $header;
}

public function redirect($url) {
	header('Location: ' . $url);
	exit;
}

public function setOutput($output, $level = 0) {
	$this->output = $output;
	$this->level = $level;
}

private function compress($data, $level = 0) {
	if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== FALSE)) {
		$encoding = 'gzip';
	}

	if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'x-gzip') !== FALSE)) {
		$encoding = 'x-gzip';
	}

	if (!isset($encoding)) {
		return $data;
	}

	if (!extension_loaded('zlib') || ini_get('zlib.output_compression')) {
		return $data;
	}

	if (headers_sent()) {
		return $data;
	}

	if (connection_status()) {
		return $data;
	}

	$this->addHeader('Content-Encoding: ' . $encoding);

	return gzencode($data, (int)$level);
}

public function output() { // вот метод output() о котором я писал
	if (!defined('HTTP_CATALOG') $this->output = str_replace('index.php?route=common/home', '', $this->output); // это добавленная строка
	if ($this->level) {
		$ouput = $this->compress($this->output, $this->level);
	} else {
		$ouput = $this->output;
	}	

	if (!headers_sent()) {
		foreach ($this->headers as $header) {
			header($header, TRUE);
		}
	}

	echo $ouput;
}
}
?>

И тут в коде ошибка, читайте ещё ниже!

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

Закрывающую скобку я потерял...

Вот так должно быть

if (!defined('HTTP_CATALOG')) $this->output = str_replace('index.php?route=common/home', '', $this->output);

А это правильный вариант

Змінено користувачем Yesvik
  • +1 3
Надіслати
Поділитися на інших сайтах

Адрес появляется (как один из вариантов) подустим: ВОЙТИ -> ВЫЙТИ -> ВПЕРЁД

Всё сделал, всё срослось, тока вот изменей не почувствовал, ВОЙТИ -> ВЫЙТИ -> ВПЕРЁД -> ДУБЛЬ

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


Ага, теперь заработало. Спс! Но это решение только для главной. Для остальных ссылок, что можно сделать?

Для главной был дубль потому что одна и та-же страница открывалась по адресу мой_сайт/ и по адресу мой_сайт/index.php?route=common/home

Для других страниц дублей нет.

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

Не чего страшного, если я добавил строку в следующие места:

/catalog/system/library/response.php

/download/system/library/response.php

/system/system/library/response.php

Вроде полёт нормальный. Подводных камней не будет?

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


Оооо... у тебя не просто подводные камни, а целые рифы...

Откуда у тебя всё это безобразие?

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

gdi31, бу-га-га

откуда вы столько мусора насобирали?

должен быть только один файл

ВАШ_DOC_ROOT/system/library/response.php

ВАШ_DOC_ROOT/catalog/controller/
ВАШ_DOC_ROOT/catalog/language/
ВАШ_DOC_ROOT/catalog/model/
ВАШ_DOC_ROOT/catalog/view/

ВАШ_DOC_ROOT/download/...электронные_товары_для_скачивания
Змінено користувачем afwollis
  • +1 1
Надіслати
Поділитися на інших сайтах

Оооо... у тебя не просто подводные камни, а целые рифы...

Откуда у тебя всё это безобразие?

gdi31, бу-га-га

откуда вы столько мусора насобирали?

должен быть только один файл...

Видимо был бухой и из так себе магазина хотел сделать TheBest (если честно, то и не знаю, откуда всё это взялось :) ).

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

Зато теперь как из бани, такая свежесть, такая чистота, прям песня!

Короче. БОЛЬШОЕ ВАМ СПАСИБО ЗА БДИТЕЛЬНОСТЬ!

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


Кто может помочь мне со скриптом, нужно чтоб для товаров в которых не прописана категория для формирования URL автоматом прописалась категория в которой он отображается (каждый товар отображается только в одной категории). Сам пробывал, но у мене не получилось.

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


Если речь идёт о "Категория:" в карточке товара и все товары принадлежат только к одной категории - не заморачивайся, скрипт сам разберётся... Заполнять "Категория:" надо для тех товаров которые принадлежат нескольким категориям.

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

сделайте, или напишите как сделать для opencart 1.4.9

Что именно "как сделать"?
Надіслати
Поділитися на інших сайтах

Да, скрипт сам разбирается но с новыми товарами, а старые товары (которые были доданы в магазин до того как я поставил этот модуль) так и не имеют этого значения, и url выглядит так

http://www.site.com/shop/seo-url
Надіслати
Поділитися на інших сайтах


А в "Показывать в категориях:" хоть какая-то категория отмечена?

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

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

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

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

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

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

Вхід

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

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

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

×
×
  • Створити...

Important Information

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