更新后“主页”类别页面无效

时间:2014-06-03 20:04:57

标签: webpage prestashop updates prestashop-1.5 prestashop-1.6

版本1.4.1.4的prestashop网站正在使用category.php文件来处理类别页面。对1.6.0.6 unfortunatley的更新删除了该文件,因为它已被视为已弃用。 (URL structure changed after CMS update

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

来自:

  

URL / category.php?id_category = 6

到:

  

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

现在,第一个URL结构是404.

问题: 我们不知道为什么所有类别页面都适用于新结构,除了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之间。

1 个答案:

答案 0 :(得分:7)

在PrestaShop 1.6中,Root&家庭类别总是返回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));
    }
}

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