Virtuemart 2 — 404 страница

Virtuemart 2 работает таким образом, что на сайте присутствуют дубли страниц. Настроим так, чтобы дублей не было, чтобы выдавалась 404 страница.

Этот пост был написан в продолжение темы 404 страница для Joomla. Как оказалось, настройки 404 страницы для Joomla недостаточно. При использовании в связке с Virtuemart 2 возникают дубли вида:

  • http://ваш_сайт.com.ua/category/любой_текст/product.html
  • http://ваш_сайт.com.ua/categoryлюбой_текст/product.html
  • http://ваш_сайт.com.ua/category/любой_текстproduct.html

И т.д. Такие страницы полностью дублируют правильный URL http://ваш_сайт.com.ua/category/product.html и отдают код ответа 200.

Для того, чтобы избавится от этого эффекта необходимо проделать следующее:

  1. Настроить 404 страницу для Joomla, как в этом посте.
  2. Правим файл /components/com_virtuemart/views/productdetails/tmpl/ваш_шаблон_товара.php. Перед выводом первого div вставляем следующий код
  3. <?php
    if($this->product->categories[0] != JRequest::getVar('virtuemart_category_id') ){
        header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
        include_once($_SERVER['DOCUMENT_ROOT']."/templates/ваш_шаблон/404.html");
        die;
    }
    ?>

    Если товар принадлежит двум категориям, то условие в скобках if должно быть

    $this->product->categories[0] != JRequest::getVar('virtuemart_category_id') && $this->product->categories[1] != JRequest::getVar('virtuemart_category_id')
  4. Правим файл /components/com_virtuemart/router.php. У меня примерно 580 строка. Находим код
  5. $vars['virtuemart_product_id'] = $product['virtuemart_product_id'];
    $vars['virtuemart_category_id'] = $product['virtuemart_category_id'];

    Меняем на:

    if(!$segments[1]){
        $vars['virtuemart_product_id'] = $product['virtuemart_product_id'];
        $vars['virtuemart_category_id'] = $product['virtuemart_category_id'];
    }else{
        JError::raiseError(404, JText::_("Page Not Found"));
    }

На этом все, все дубли отдают 404 код ответа и подтягивают шаблон 404 страницы.

Категория: Virtuemart 2
Comments are disabled