0 Пользователей и 1 Гость просматривают эту тему.
  • 5 Ответов
  • 2021 Просмотров
*

igordyak67

  • Новичок
  • 3
  • 1 / 0
Уважаемые господа!

Перерыл ВСЁ! Требуется помощь, так как в интернете полного решения вопроса нет.

Суть в том, что в VM2 в связке с Joomla 2.5 изначально не выдавалась ошибка 404 при вводе некоректных URL типа: site.ru/asfasff, а перенаправляло на главную. С категориями товаров и главной страницей, вроде задачу решил путём вставки:

в /components/com_virtuemart/virtuemart.php, на строке 111, вместо

Код
$mainframe->redirect(JRoute::_ ('index.php?option=com_virtuemart&view=virtuemart', FALSE));

Данный код:

Код
JError::raise(E_ERROR,'404','Not found');
      $mainframe->close();

Но возник главный вопрос:

ЕСЛИ ТОВАР БЫЛ УДАЛЁН, ТО ПРИ ПЕРЕХОДЕ ПО ЕГО URL ССЫЛКА ПРЕОБРАЗУЕТСЯ В
site.ru/название_категории?error=404


Всё бы ничего, но мало того, что не выдаётся страница ошибки 404, поисковик получает неправильный сигнал 303. Начал смотреть решения в интернете, но таковых не оказалось, только поверхностно разбирались темы.

Вопрос с выдачей страницы error 404 решил, но сигнал всё равно передаётся неправильный.
Сделал следующее:

В templates\шаблон\html\com_virtuemart\category\default.php
Добавил после строки defined ('_JEXEC') or die('Restricted access'):

Код
$input = JFactory::getApplication()->input;
if($input->getInt('error', 0) === 404)
{
JError::raise(E_ERROR,'404','Not found');
    $mainframe->close();
}

Так как программирование знаю поверхностно, даже это далось с большим трудом. Моя задача всё-таки заставить выдавать сигнал поисковику error 404, при переходе на удалённый товар.

ПРИЛАГАЮ ИЗОБРАЖЕНИЕ С ТАКОЙ ЖЕ ПРОБЛЕМОЙ. На нём видно, что по ссылке /женская_одежда/штаны?error=404 находился товар, который ранее располагался по адресу /женская_одежда/штаны/товар

Форумчане, возможно кто-то сталкивался с таким вопросом, я уже потерял надежду решить его.

*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
А так, в лоб,
Код: php-brief
ob_end_clean();
header("HTTP/1.0 404 Not Found");
include '404.php';
exit();
не катит?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

igordyak67

  • Новичок
  • 3
  • 1 / 0
Протестировал, предложенный вариант, выводит белый экран, категории перестают работать.
В варианте, который я описал страница 404 выдаётся, но выдаётся сигнал 303 на странице site.ru/категория/удалённый_товар и перенаправляет на site.ru/категория?error=404 при этом уже выдаётся ошибка 404. Интересно как сделать, чтобы на странице site.ru/категория/удалённый_товар сразу выдавалась 404.

Код
В templates\шаблон\html\com_virtuemart\category\default.php
Добавил после строки defined ('_JEXEC') or die('Restricted access'):

Код:

$input = JFactory::getApplication()->input;
if($input->getInt('error', 0) === 404)
{
JError::raise(E_ERROR,'404','Not found');
    $mainframe->close();
}
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Протестировал, предложенный вариант, выводит белый экран
А 404.php существует?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

igordyak67

  • Новичок
  • 3
  • 1 / 0
Файл error.php существует стандартный, в папке с шаблоном. Возможно стоит в моём случае прописать такой код:
Код
ob_end_clean();
header("HTTP/1.0 404 Not Found");
include 'error.php';
exit();

Я так понял его нужно поместить вместо

Код
$input = JFactory::getApplication()->input;
if($input->getInt('error', 0) === 404)
{
JError::raise(E_ERROR,'404','Not found');
    $mainframe->close();
}

или заменить в /components/com_virtuemart/virtuemart.php, на строке 111?

вместо
Код
JError::raise(E_ERROR,'404','Not found');
      $mainframe->close();

Ваш код говорит
Если заголовок HTTP/1.0 404 Not Found, то выдавай error.php. Правильно?

Если нет, нужно ли что-то добавлять к данному коду типа if($input->getInt('error', 0) === 404)

Благодарю за проявление интереса к моему вопросу.
« Последнее редактирование: 04.12.2015, 11:32:55 от igordyak67 »
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Ваш код говорит
Если заголовок HTTP/1.0 404 Not Found, то выдавай error.php. Правильно?
Нет, он просто отправляет код 404 и заодно показывает error.php, без каких-либо условий.
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

VirtueMart 3 Отображать только товары в наличии!

Автор GaziroFFka

Ответов: 4
Просмотров: 2111
Последний ответ 06.06.2023, 13:55:13
от Akeksandr
SP VirtueMart Category Search

Автор ve1006

Ответов: 10
Просмотров: 6044
Последний ответ 18.01.2023, 10:39:10
от AzMandius
Как вывести ID товара в описании товара?

Автор Stasweb

Ответов: 8
Просмотров: 2412
Последний ответ 28.11.2022, 23:22:27
от Evgen Kulibin
Как вывести модуль в страницу VirtueMart?

Автор harddrop

Ответов: 11
Просмотров: 2889
Последний ответ 13.11.2022, 13:11:37
от Evgen Kulibin
Как правильно настроить покупку в VirtueMart?

Автор varella

Ответов: 1
Просмотров: 1259
Последний ответ 12.10.2022, 16:14:04
от varella