PrestaShop:如果产品不存在,则重定向到主页

时间:2016-08-28 17:34:13

标签: php prestashop url-redirection prestashop-1.6

我试图像这样重定向页面:

https://www.cdsoft.co.il/index.php?id_product=303915&controller=product&id_lang=1

我希望每个已删除id_product的网页都会重定向到我的主页:

表示:我想重定向" https://www.cdsoft.co.il/index.php?id_product=XXX"

如何在htaccess文件中执行此操作?

2 个答案:

答案 0 :(得分:3)

我提出@Labradorcode的想法,但采用正确的方法。 在rootofps/override/controllers/front/ProductController.php中创建一个ProductController.php的ovverride,因此你必须在该目录中创建一个新文件(对于rootofps我指的是PrestaShop的安装目录),该文件的内容写在下面:

class ProductController extends ProductControllerCore {
    public function init(){
        FrontController::init();

        if ($id_product = (int)Tools::getValue('id_product')) {
            $this->product = new Product($id_product, true, $this->context->language->id, $this->context->shop->id);
        }

        if (!Validate::isLoadedObject($this->product)) {
            header('HTTP/1.1 404 Not Found');
            header('Status: 404 Not Found');
            header('Location: '.$this->context->link->getPageLink('index', array('id_product', Tools::getValue('id_product'))));
        } else {
            parent::init();
        }
    }
}

在这种情况下,如果产品被完全删除,重定向就会起作用,而如果被禁用则不行。

创建文件后,请删除此文件rootofps/cache/class_index.php

答案 1 :(得分:0)

也许这会有所帮助。

修改文件controllers/front/ProductController.php,行91或查找Tools::displayError('Product not found'),并为此进行更改:

header("Location: /");