Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

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


Yesvik
 Поделиться

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

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

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

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
Ссылка на комментарий
Поделиться на других сайтах

Yesvik, описанный 3-й варинт не работает: не отображается совсем ничего. Можно более конкретное описание вставки ?
Ссылка на комментарий
Поделиться на других сайтах


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
Ссылка на комментарий
Поделиться на других сайтах

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

gdi31, у тебя что-нибудь получилось?

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


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

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

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

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

Изменено пользователем Yesvik
  • +1 3
Ссылка на комментарий
Поделиться на других сайтах

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

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

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


Yesvik в очередной раз ТЕБЕ

Большое спасибо!

почищено от греха подальше.

afwollis

Изменено пользователем afwollis
Ссылка на комментарий
Поделиться на других сайтах


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

Для главной был дубль потому что одна и та-же страница открывалась по адресу мой_сайт/ и по адресу мой_сайт/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 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

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

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