更新后"主页"类别页面无效

Adi*_*oui 2 webpage updates prestashop prestashop-1.5 prestashop-1.6

版本1.4.1.4的prestashop网站正在处理category.php类别页面的文件.对1.6.0.6 unfortunatley的更新删除了该文件,因为它已被视为已弃用.(CMS更新后URL结构发生了变化)

一个结果是URL结构的变化.

从:

URL/category.php?id_category = 6

至 :

URL /的index.php?id_category = 6&控制器=类别&id_lang = 2

所以现在,第一个URL结构给出了404.

问题: 我们不知道为什么所有的类别页面与新strucure做工精细,除了页面Home(acceuil)类别(全球父类的所有网站类别).home即使使用新结构,此类别页面也会给出404.换句话说,以下网址无效:

URL /的index.php?id_category = 1&控制器=类别&id_lang = 2

如果我没错,Prestashop默认将id = 1给予此home类别?你的观点出了什么问题?任何见解都受到高度赞赏.

根据Prestashop-Developper.co回答编辑

当我在PhpMyAdmin中检查我的数据库时:

从1.4.1.4更新到1.6.0.6之后:

我既没有找到id = 0的类别,也没有找到id = 2的类别.我只找到id = 1的类别Home和id = 104的类别Root.Root是Home的父级,但Home的字段is_root_category设置为1 !!!! 我真的不理解任何事情.

在从1.4.1.4更新到1.6.0.6之前:

根本没有Root类别,根本没有任何is_root_category字段.

注意: 这些观察结果基于以下表:ps_category,ps_category_group,ps_category_product,ps_category_shop在updtate之前和之后= 1.4.1.4到1.6.0.6之间.

Pre*_*per 7

在PrestaShop 1.6中,Root和Home类别总是返回404(在PS 1.5中只有Root返回404),如果您需要更改Home类别,则必须为CategoryController创建覆盖.

请注意,在PrestaShop 1.4中,您拥有ID为1的"Home",从1.5开始,您拥有id = 1的"Root"和id = 2的"Home".找到主页类别的ID.

使用以下内容在/ override/controllers/front /中创建文件CategoryController.php:

<?php 

class CategoryController extends CategoryControllerCore
{
    public function canonicalRedirection($canonicalURL = '')
    {
        if (Tools::getValue('live_edit'))
            return ;
        if (!Validate::isLoadedObject($this->category) || !$this->category->inShop() || !$this->category->isAssociatedToShop() || $this->category->id == Configuration::get('PS_ROOT_CATEGORY'))
        {
            $this->redirect_after = '404';
            $this->redirect();
        }
        if (!Tools::getValue('noredirect') && Validate::isLoadedObject($this->category))
            FrontController::canonicalRedirection($this->context->link->getCategoryLink($this->category));
    }
}
Run Code Online (Sandbox Code Playgroud)

确保在创建上述文件后删除/cache/class_index.php.