Автор Тема: Оформление 404 ошибки  (Прочитано 1078 раз)

24 Июнь 2016, 08:34:19
  • Фрилансер
  • *
  • Сообщений: 223
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Доброго времени суток, форумчане :-)
Хочу снова обраться к Вам за помощью У меня такой вопрос, вот если товар удален или скрыт, то выходит ответ "Товар не найден..." http://prntscr.com/bkbu72
Хотелось бы чтоб именно когда товар не доступен http://prntscr.com/bkbud7 у меня появлялась вот эта страничка http://bashenergocom.ru/home/1559-uvazhaemyj-gost-dannyj-tovar-uzhe-prodan.html
Вопрос: где мне прописать редирект именно с ошибки "товар не найден" на мою созданную страничку??))
Спасибо заранее за развернутые ответы))) (неразвернутые не понимаю, как так знания "сырые")
24 Июнь 2016, 09:47:36
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
"Товар не найден..." - это 404 страница, измените шаблон 404.tpl.
24 Июнь 2016, 09:58:48
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
"Товар не найден..." - это 404 страница, измените шаблон 404.tpl.
Не всегда. Это может быть и страница товара, только с текстом об ошибке. В таком случае нужно изменить вывод ошибок в контроллере ProductController.php
$this->errors[] = Tools::displayError('Product not found');заменить на редирект на вашу страницу.
24 Июнь 2016, 10:13:05
Ответ #3
  • Фрилансер
  • *
  • Сообщений: 223
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
"Товар не найден..." - это 404 страница, измените шаблон 404.tpl.
Не всегда. Это может быть и страница товара, только с текстом об ошибке. В таком случае нужно изменить вывод ошибок в контроллере ProductController.php
$this->errors[] = Tools::displayError('Product not found');заменить на редирект на вашу страницу.

Спасибо за ответ. Файл нашла, строку нашла. Пока вот только не знаю как правльно мне прописать мою страничку. http://prntscr.com/bkcoln
ErrorDocument 404 /http://bashenergocom.ru/home/1559-uvazhaemyj-gost-dannyj-tovar-uzhe-prodan.html

Нужно что-то подобное, но не знаю как правльно написать. Помогите пожалуйста))
24 Июнь 2016, 11:07:09
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Там же есть как редирект задать
header('Location: '.$this->context->link->getProductLink($this->product->id_product_redirected));Также и делаешь, только меняешь
$this->context->link->getProductLink($this->product->id_product_redirected)на свой url.
24 Июнь 2016, 12:07:36
Ответ #5
  • Фрилансер
  • *
  • Сообщений: 223
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Там же есть как редирект задать
header('Location: '.$this->context->link->getProductLink($this->product->id_product_redirected));Также и делаешь, только меняешь
$this->context->link->getProductLink($this->product->id_product_redirected)на свой url.

Поменяла, но ничего не изменилось (((( http://prntscr.com/bkdvmv
Что делаю не так?
24 Июнь 2016, 13:30:13
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Tools::redirect('index.php?controller=mycontroller');Редирект на другую страницу.
Котроллер mycontroller должен быть создан предварительно, в нем определены переменные и название шаблона.
Можно также испольвзать любой базовый корнтроллер.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
24 Июнь 2016, 13:34:14
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 1808
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
header('Location: http://www.example.ru/'); C указанем полного адреса страницы. Не учитвывется вложенность директорий
header("Location: /");С учетом вложенности директорий
24 Июнь 2016, 13:48:09
Ответ #8
  • Фрилансер
  • *
  • Сообщений: 223
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
header('Location: http://www.example.ru/'); C указанем полного адреса страницы. Не учитвывется вложенность директорий
header("Location: /");С учетом вложенности директорий
у меня ничегошеньки не получается  :'( :'(  http://prntscr.com/bkezgq
как быть
я правильно в том файле все редактирую, просто меняю код,а изменений нет никаких
24 Июнь 2016, 13:54:26
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 1808
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Вы меняете правила редикта, они срабатают только когда будут такие ситуации. Т.е. когда будет 301 или 302 код ответа сервера , тогда и будет переход на другую страницу.
24 Июнь 2016, 14:04:31
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Не всегда. Это может быть и страница товара, только с текстом об ошибке. В таком случае нужно изменить вывод ошибок в контроллере ProductController.php
$this->errors[] = Tools::displayError('Product not found');заменить на редирект на вашу страницу.
До
if (!Validate::isLoadedObject($this->product)) {
            header('HTTP/1.1 404 Not Found');
            header('Status: 404 Not Found');
            $this->errors[] = Tools::displayError('Product not found');
после
if (!Validate::isLoadedObject($this->product)) {
            header('HTTP/1.1 404 Not Found');
            header('Status: 404 Not Found');
            //$this->errors[] = Tools::displayError('Product not found');
            header('Location: http://bashenergocom.ru/home/1559-uvazhaemyj-gost-dannyj-tovar-uzhe-prodan.html');
            exit;
24 Июнь 2016, 14:31:52
Ответ #11
  • Фрилансер
  • *
  • Сообщений: 223
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Не всегда. Это может быть и страница товара, только с текстом об ошибке. В таком случае нужно изменить вывод ошибок в контроллере ProductController.php
$this->errors[] = Tools::displayError('Product not found');заменить на редирект на вашу страницу.
До
if (!Validate::isLoadedObject($this->product)) {
            header('HTTP/1.1 404 Not Found');
            header('Status: 404 Not Found');
            $this->errors[] = Tools::displayError('Product not found');
после
if (!Validate::isLoadedObject($this->product)) {
            header('HTTP/1.1 404 Not Found');
            header('Status: 404 Not Found');
            //$this->errors[] = Tools::displayError('Product not found');
            header('Location: http://bashenergocom.ru/home/1559-uvazhaemyj-gost-dannyj-tovar-uzhe-prodan.html');
            exit;


Спасибо за такой развернутый ответ, я все сделала, но все таки изменений нет http://prntscr.com/bkfglk
Проверяю я с помощью вот этой отсутствующей страницы http://bashenergocom.ru/meritelnyj-instrument/537-steklyannye-rtutnye-termometry-tipa-tgm-u-7.html вместо слов "Уважаемый посетитель, данный товар уже купили. Товар не доступен." хотела увидеть страницу http://bashenergocom.ru/home/1559-uvazhaemyj-gost-dannyj-tovar-uzhe-prodan.html
Вроде по логике (хотя я не сильна в php) вроде бы должна появиться, но нет ее...
Видимо я явно что-то упускаю(((
24 Июнь 2016, 14:51:15
Ответ #12
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Вы изменили только один вариант.
Например, при таком адресе страницы
http://bashenergocom.ru/avtomaticheskie-vyklyuchateli/11845554-kontfgfdgdfktnyj-blok-abb-ca5-10-1sbn010010r1010.htmlбудет редирект.
По этому примеру делайте редирект для всех вариантов.
27 Июнь 2016, 07:34:08
Ответ #13
  • Фрилансер
  • *
  • Сообщений: 223
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вы изменили только один вариант.
Например, при таком адресе страницы
http://bashenergocom.ru/avtomaticheskie-vyklyuchateli/11845554-kontfgfdgdfktnyj-blok-abb-ca5-10-1sbn010010r1010.htmlбудет редирект.
По этому примеру делайте редирект для всех вариантов.
Ооох круто... Спасибо!!!!
Значит пока настроено так, что если введен неправльный url,то он перекидывает на страницу "Товар куплен". 
А вот мне дальше редактировать все тот же файл ProductController.php, что бы вместо отсутствующего товара  товара вышла нужная страница или еще какой-нибудь другой файл редактировать?

27 Июнь 2016, 07:47:13
Ответ #14
  • Фрилансер
  • *
  • Сообщений: 223
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вы изменили только один вариант.
Например, при таком адресе страницы
http://bashenergocom.ru/avtomaticheskie-vyklyuchateli/11845554-kontfgfdgdfktnyj-blok-abb-ca5-10-1sbn010010r1010.htmlбудет редирект.
По этому примеру делайте редирект для всех вариантов.

Там же редатикровала и все получилось. Спасибо Вам большое!!!
Всем огромное спасибо. Очень классный форум, в беде не оставите.